天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

MEF——.NET中值得體驗的精妙設計

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

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

  1、無廢話MEF

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

  2、典型的MEF組合過程

  (1)創建組件目錄(如AssemblyCatalog)

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

  (3)創建一個組件

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

  示例代碼如下:

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

NET技術MEF——.NET中值得體驗的精妙設計,轉載需保留來源!

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

主站蜘蛛池模板: 回复术士人生重启在线观看 | 免费精品美女久久久久久久久 | 中文字幕亚洲欧美在线视频 | 精品国产乱码久久久久久免费流畅 | 操老太太的逼 | 久久全国免费久久青青小草 | 亚洲国产中文在线视频 | 259luxu高跟黑色丝袜系列 | av色天堂2018在线观看 | 日本无码欧美激情在线视频 | 俄罗斯mm| 国产最新精品亚洲2021不卡 | 色窝窝777欧美午夜精品影院 | 黄页网站免费视频大全9 | 欧美激情一区二区三区视频 | 亚洲欧美综合中文字幕 | 亚洲精品国产自在在线观看 | 在线播放无码字幕亚洲 | 十大禁止安装的黄台有风险 | FREE性丰满白嫩白嫩的HD | ai换脸在线全集观看 | 香蕉人人超人人超碰超国产 | 好姑娘社区在线视频 | 2020久久精品永久免费 | 中文字幕人成人乱码亚洲影视S | 我半夜摸妺妺的奶C了她 | 少妇高潮惨叫久久久久久欧美 | 日韩精品无码久久一区二区三 | 欧美亚洲视频在线二区 | 偷拍精品视频一区二区三区 | 免费精品在线视频 | 中文字幕久精品视频在线观看 | 亚洲国产欧美在线人成aaaa20 | 午夜福利影院私人爽爽 | 中俄两军在日本海等上空战略巡航 | 亚洲在线2018最新无码 | 高h辣h双处全是肉一对一 | 国内精品久久久久久久试看 | 午夜福利不卡片在线播放免费 | 亚洲国产日韩欧美高清片a 亚洲国产日韩a精品乱码 | hd性欧美俱乐部中文 |