一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

MEF——.NET中值得體驗的精妙設(shè)計

  MEF(Managed Extensibility Framework)是.NET Framework 4.0一個重要的庫,Visual Studio 2010 Code Editor的擴展支持也是基于MEF構(gòu)建的。MEF的目標(biāo)是簡化創(chuàng)建可擴展的應(yīng)用程序,其核心類是ComposablePart,即具有組合能力的組件,每一個稱為ComposablePart(中文可為可組合構(gòu)件,不過下文一直采用英文來表示,這樣比較貼切)的組件可以組合(稱為Import)其它組件的功能(其它組件通過聲明Export提供功能)并且它也可以通過定義Export將其功能暴露給其它組件。

  ComposablePart通過組件目錄(ComposablePartCatalog)來搜索發(fā)現(xiàn)需要的功能,組件目錄可以是一個物理文件目錄、網(wǎng)絡(luò)存儲等。每一個ComposablePart還具備動態(tài)組合的能力,在必要的情況下可以重新組合功能。本文將采用自底向上的思路體驗一下MEF的設(shè)計思想。

  1、無廢話MEF

  MEF的核心是可組合組件ComposablePart,它由ComposablePartDefintion來描述和創(chuàng)建。每一個可組合組件通過定義ExportDefintion向其它組件提供功能,通過ImportDefinition引用其它組件的功能,通過Metadata來描述組件自身的信息。在創(chuàng)建一個ComposablePart組件后,通過在組件目錄(ComposableCatalog)搜索需要的功能實現(xiàn)組件組合。

  2、典型的MEF組合過程

  (1)創(chuàng)建組件目錄(如AssemblyCatalog)

  (2)創(chuàng)建組合容器CompositionContainer,組件容器通過組件目錄搜索組件的定義

  (3)創(chuàng)建一個組件

  (4)從組件容器獲取其它組件功能的定義,然后執(zhí)行匹配組合

  示例代碼如下:

   1. var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); //創(chuàng)建一個程序集目錄,用于從一個程序集獲取所有的組件定義   
2. var container = new CompositionContainer(catalog); //創(chuàng)建一個組合容器
3. var composablePart = new MyComponent();
4. container.ComposeParts(composablePart); //執(zhí)行組合,從容器中獲取ExportDefinition并創(chuàng)建實例組合在一起
5. // composablePart組合完成以供使用

NET技術(shù)MEF——.NET中值得體驗的精妙設(shè)計,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 91中文字幕在线播放 | 亚洲精品人成网在线播放影院 | 精品福利视频网 | 欧美人禽杂交狂配在线观看视频 | 男女视频在线观看免费高清观看 | 激情网成人 | 丁香欧美| 亚洲日本一区二区三区 | 手机在线成人精品视频网 | 亚洲综合久 | 国产精品人成 | 四虎精品影院4hutv四虎 | 久久精品国产清白在天天线 | 亚洲欧美综合另类图片小说区 | 看全色黄大色黄女片做 | 久久精品免视着国产成人 | 成人女人a毛片在线看 | 在线免费观看一区二区三区 | 中文字幕久久亚洲一区 | 久久中文字幕一区二区三区 | 国产一二三区在线观看 | 亚色在线| 欧美一级精品 | 精品欧美一区二区精品久久 | 激情小说视频图片 | 国产一区二区在线视频 | 四虎在线最新永久免费播放 | 国产精品猎奇系列在线观看 | 精品日韩一区二区 | 大伊人青草狠狠久久 | 国产欧美一区二区精品性色 | 色天天久久 | 男女性色大片免费网站 | 色天天躁夜夜躁天干天干 | www.色播.com| 四虎影视永久在线精品免费 | 综合免费视频 | 黄色网址免费在线播放 | 2021精品国产品免费观看 | 免费人成在线观看视频色 | 黄网在线观看网址入口 |