久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

動(dòng)態(tài)加載與插件系統(tǒng)的初步實(shí)現(xiàn)(一):反射與MEF解決方案

 昵稱10504424 2013-07-16

涉及內(nèi)容:

PRRT1: 反射實(shí)現(xiàn)

插件系統(tǒng)的基本目的是實(shí)現(xiàn)宿主與組件的隔離,,核心是作為接駁約定的接口,宿主使用類型發(fā)現(xiàn)及掛載插件,,以下是反射實(shí)現(xiàn)。

創(chuàng)建類庫項(xiàng)目Plugin,,添加接口IPlugin:

創(chuàng)建控制臺(tái)程序HostApp,,添加對(duì)Plugin項(xiàng)目的引用,Main方法代碼:

創(chuàng)建類庫項(xiàng)目MyPlugin1,,添加對(duì)Plugin項(xiàng)目的引用,,添加Plugin1類并實(shí)現(xiàn)IPlugin:

修改該項(xiàng)目的屬性,在“生成”選項(xiàng)卡中找到輸出,,將“輸出路徑”指向HostApp下的bin\Debug文件夾,,運(yùn)行。

宿主使用無參的IPlugin子類完成組件調(diào)用,。代碼邏輯并不復(fù)雜但我們還有更優(yōu)雅的解決方式即MEF框架,,這里拿MEF的完成所需功能,組件生命周期等內(nèi)容并不深入討論,,如有需求請(qǐng)自行MSDN,。

 

PRRT2: MEF實(shí)現(xiàn)

MEF框架以Import、Export特性為功能入口,,修改MyPlugin項(xiàng)目,,引用System.ComponentModel.Composition,,為MyPlugin添加Export特性:

注意Export明確指定導(dǎo)出類型為IPlugin,在Plugin項(xiàng)目中添加類PluginProvider,,引用System.ComponentModel.Composition和System.ComponentModel.Composition.Hosting,,添加IEnumerable<Lazy<IPlugin>>類型只讀屬性并標(biāo)注ImportMany特性:

抽象基類ComposablePartCatalog表示組件目錄,子類DirectoryCatalog使用指定目錄進(jìn)行搜索,。PluginProvider使用了當(dāng)前程序運(yùn)行目錄作為dll路徑,。同時(shí)導(dǎo)入點(diǎn)所在字段或?qū)傩钥梢允荌Enumerable<T>、IEnumerable<Lazy<T>>,、IEnumerable<Lazy<T, TMetadata>>等,,延遲綁定能相對(duì)降低內(nèi)存開銷,這里使用了第2種,,接著修改Main方法:

運(yùn)行得到同樣的結(jié)果,,代碼更加優(yōu)雅;根據(jù)需求,,修改PluginProvider的導(dǎo)入邏輯及使用泛型版本,,將得到更多的靈活性。代碼文件

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多