逐步解說:公開 .NET 外掛程式模型
更新:2007 年 11 月
這個逐步解說示範如何擴充傳統的 Scribble MFC,以支援使用 .NET 技術的外掛程式模型。
MFC Scribble 方案會擴充至公開 .NET 物件模型。此外,範例也會公開可讓 .NET 外掛程式和 MFC Scribble 方案完美互動的外掛程式架構。
必要條件
ScribbleDotNET 範例:利用 CLR 功能延伸 Scribble 的功能
若要建置和執行這個範例
在 Visual Studio 開發環境中開啟 Scribble.sln 方案檔。
使用 [偵錯] 或 [發行] 組態來建置方案。
在 [方案總管] 下,開啟 plugins.xml 方案項目。
在 plugins.xml 檔案中,將組件項目中路徑的第一個部分變更為對應於用來建置的組態。例如,若您使用 [偵錯] 組態進行建置,請將 "VBShapes.dll" 變更為 "Debug\VBShapes.dll",並將 "CSPenColor.dll" 變更為 "Debug\CSPenColor.dll"。
執行內建可執行檔。
從功能表列中選取 [外掛程式]。
- 選取 [繪製圖案] 功能表項目。如此將會執行 VBShapes 外掛程式,此外掛程式會繪製出三個不同顏色的方塊外框。
從功能表列中選取 [外掛程式]。
- 選取 [變更畫筆顏色] 功能表項目。如此將會執行 CSPenColor 外掛程式,此外掛程式可讓您透過 .Net 色彩對話方塊選取畫筆顏色。
運作的方式
這個範例是在兩個主要部分中實作:
公開物件模型供外掛程式撰寫者使用
會公開兩個主要介面以實作外掛程式模型 (如需這些介面的定義,請參閱「ScribbleApp 專案」):
IScribbleApp – 這個介面會公開一組功能,讓外掛程式撰寫者與執行中的 Scribble 應用程式互動。這個介面是由 Scribble 所實作 (請參閱 Scribble 專案中的 ScribbleApp.cpp),而且所實作介面的執行個體 (Instance) 會傳遞到 IScribblePlugin 的 Run() 成員函式,這個部分將於下面內容中加以討論。
IScribblePlugin – 這個介面是由外掛程式撰寫者所實作。外掛程式撰寫者將會使用 IScribbleApp 所公開的功能來實作外掛程式。
擴充基底 Scribble 應用程式來尋找、載入和執行外掛程式
首先,會剖析包含有要載入的外掛程式清單的 XML 檔案。每一個找到的外掛程式都會進行載入,而且會透過使用 System.Reflection,驗證其具有正確的型別。更精確的說,我們會使用反映 (Reflection) 來搜尋所有由該外掛程式模組公開的型別,並確定其中一個型別會實作我們所公開的 IPlugin 介面。這項實作可在 Scribble 專案的 PluginBld.cpp 中找得到。
然後,CScribbleApp 會使用 PluginBld.cpp 中實作的常式,來取得所有找到的外掛程式清單。針對此清單中的每個外掛程式,都會在 [外掛程式] 功能表下動態建立功能表項目。當使用者從 [外掛程式] 選取功能表項目時,適當的外掛程式便會執行。
所使用的技術
使用 XML 來指定外掛程式的位置
使用反映來驗證在 XML 檔案中指定的外掛程式是否為適當的類型
為建立外掛程式定義物件模型
在 C++ 應用程式中載入並執行外掛程式