国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 公主岭市| 万荣县| 齐齐哈尔市| 钟祥市| 铁岭市| 临高县| 睢宁县| 元朗区| 买车| 武安市| 如东县| 冀州市| 凤庆县| 定远县| 耒阳市| 尼玛县| 南京市| 卓尼县| 永州市| 马龙县| 乌兰浩特市| 古浪县| 麻栗坡县| 安福县| 南皮县| 桃源县| 陵川县| 石狮市| 海林市| 颍上县| 固原市| 仁怀市| 盐津县| 体育| 聂拉木县| 胶州市| 手游| 民丰县| 安福县| 呼伦贝尔市| 丰台区|