国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

C#中Plugin的實(shí)踐

2024-07-21 02:19:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
中國(guó)最大的web開(kāi)發(fā)資源網(wǎng)站及技術(shù)社區(qū),
plugin是一種相當(dāng)靈活的可擴(kuò)充、模塊化機(jī)制,微軟的application block不少采用了plugin結(jié)構(gòu),本文討論plugin在c#中的一種實(shí)踐。
plugin是基于統(tǒng)一的接口,在c#中采用reflection機(jī)制產(chǎn)生實(shí)現(xiàn)iplugin的對(duì)象。假定接口為iplugin,以下代碼塊示意動(dòng)態(tài)產(chǎn)生iplugin對(duì)象的代碼段,其中dllname是實(shí)現(xiàn)iplugin接口類(lèi)的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機(jī)制,實(shí)現(xiàn)plugin也很簡(jiǎn)單,大致是(iplugin)class.forname(classname).newinstance()的樣子。c++由于reflection機(jī)制,可以采用dll模擬,在dll中export一個(gè)全局函數(shù)和interface,該全局函數(shù)返回實(shí)現(xiàn)了接口的對(duì)象的指針。

微軟有關(guān)于provider pattern的文章,文中提供了另一種c#可以帶參數(shù)的實(shí)例化方法。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 从江县| 财经| 鄢陵县| 杭锦后旗| 丁青县| 额敏县| 阿克苏市| 长岛县| 从江县| 三台县| 吉隆县| 周口市| 禹城市| 洛隆县| 长垣县| 连云港市| 浙江省| 昭平县| 鄂伦春自治旗| 荔波县| 安吉县| 青河县| 托克托县| 洱源县| 镇雄县| 中阳县| 海安县| 大名县| 永清县| 子洲县| 宁强县| 扶绥县| 连云港市| 顺平县| 布拖县| 龙泉市| 明水县| 赤峰市| 新疆| 桂平市| 河西区|