程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C#中Plugin的實踐

C#中Plugin的實踐

編輯:.NET實例教程
Plugin是一種相當靈活的可擴充、模塊化機制,微軟的Application Block不少采用了Plugin結構,本文討論Plugin在C#中的一種實踐。
Plugin是基於統一的接口,在C#中采用Reflection機制產生實現IPlugin的對象。假定接口為IPlugin,以下代碼塊示意動態產生IPlugin對象的代碼段,其中dllName是實現IPlugin接口類的dll文件名:
public IPlugin LoadPlugin(string dllName)
{
Assembly asm = AppDomain.CurrentDomain.Load(dllName);
foreach(Type t in asm.GetTypes()) {
foreach(Type iface in t.GetInterfaces()) {
if(iface.Equals(typeof(IPlugin))) {
return (System.Activator.CreateInstance(t)) as IPlugin;
}
}
}
return null;
}

Java也有Reflection機制,實現Plugin也很簡單,大致是(IPlugin)Class.forName(className).newInstance()的樣子。C++由於Reflection機制,可以采用DLL模擬,在DLL中export一個全局函數和interface,該全局函數返回實現了接口的對象的指針。

微軟有關於Provider Pattern的文章,文中提供了另一種C#可以帶參數的實例化方法。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved