mef:
原文:首先,新建乙個類庫,裡面定義介面,這裡定義兩個方法,乙個有返回值的,乙個無返回值的。
using system;
using system.collections.generic;
using system.text;
namespace imsg
}
將上面的類庫生成imsg.dll, 新建乙個類庫myplugin1,新增剛出的引用,分別新建兩個類來實現imsg中定義的介面。
using system;
using system.collections.generic;
using system.text;
using imsg;
namespace myplugin1
publicstring onshowinfo() #endregion
}}using system;
using system.collections.generic;
using system.text;
using system.windows.forms;
using imsg;
namespace myplugin1
publicstring onshowinfo() #endregion}}
將上面的都生成dll, 生成目錄可以設定為新建exe工程的bin目錄plugins資料夾下。plugins資料夾是新建的,專門存放外掛程式的。 新建乙個 winform專案來使用剛才的外掛程式.
/// /// 存放外掛程式的集合
///
private arraylist plugins = new arraylist();
//載入所有外掛程式
private void btnloadplug_click(object sender, eventargs e)}}
catch (exception ex)}}
//呼叫外掛程式的方法
private void btnexecute_click(object sender, eventargs e)}}
執行結果:
此方法用了反射,個人感覺效果不是很好。另外,注意dll物件的依賴,這種問題我在手寫上面demo的時候發現了,首先要保證依賴檔案的存在,再乙個依賴檔案的路徑需要正確。另一點要說下,對反射後的驗證可以做一些加強處理,listbox物件顯示的名字可以通過給dll中物件新增特性標記,然後獲取顯示出來。下一節我們看看mef的小例子。
最後想說一下,這不是正在意義上的外掛程式式開發,請參閱微軟的mef和maf的設計
c 外掛程式式開發
mef 原文 首先,新建乙個類庫,裡面定義介面,這裡定義兩個方法,乙個有返回值的,乙個無返回值的。using system using system.collections.generic using system.text namespace imsg 將上面的類庫生成imsg.dll,新建乙個類...
C 外掛程式式程式開發
c 外掛程式式程式開發 在網上找了下外掛程式式程式設計的資料,這裡自己先借鑑下別人的,同時發現有自己的看法,不過由於本人水平有限,不一定有參考價值,寫出來一方面是為了總結自己,以求提高,另一方面也希望各為朋友看到我的不足,給我提出寶貴意見。外掛程式的本質在於不修改程式主體 平台 的情況下對軟體功能進...
C 外掛程式式程式開發
什麼是外掛程式式程式設計 外掛程式的本質在於不修改程式主體 平台 的情況下對軟體功能進行拓展與加強,當外掛程式的介面公開後,任何公司或個人都可以製作自己的外掛程式來解決一些操作上的不便或增加新功能,也就是真正意義上實現 即插即用 軟體開發。平台 外掛程式軟體結構是將乙個待開發的目標軟體分為兩部分,一...