.Net插件框架Managed Extensibility Framework簡(jiǎn)介
Managed Extensibility Framework(MEF)是微軟的一個(gè)用來(lái)擴(kuò)展.NET應(yīng)用程序的框架,它最初為了滿(mǎn)足Visual Studio里的編輯器的需求,比如說(shuō),延遲加載所有東西和細(xì)粒度協(xié)定。隨著托管代碼慢慢地取代基于COM的擴(kuò)展模型,MEF框架也逐漸成型。
MEF是在Codeplex上開(kāi)源的,并且現(xiàn)在已經(jīng)是.Net 4.0的一部分。我們可以用它非常容易的實(shí)現(xiàn)插件框架。一個(gè)簡(jiǎn)單的示例如下(使用時(shí)需要添加System.ComponentModel.Composition.dll 的引用):
class Program { [Import] ILogger logger; void Compose() { var catalog = new AssemblyCatalog(this.GetType().Assembly); var container = new CompositionContainer(catalog); container.ComposeParts(this); } public static void Main(string[] args) { var p = new Program(); p.Compose(); p.logger.LogMessage("hello world"); } } interface ILogger { void LogMessage(string msg); } [Export(typeof(ILogger))] class ConsoleLogger : ILogger { public void LogMessage(string msg) { Console.WriteLine(DateTime.Now + ": " + msg); } }
這個(gè)例子比較簡(jiǎn)單,并不能很好的體現(xiàn)MEF帶來(lái)的便利,MS官方的一個(gè)稍微復(fù)雜點(diǎn)的例子SimpleCalculator更合適一些。
不過(guò),從這個(gè)例子中也可以看出MEF的基本工作方式:服務(wù)方通過(guò)ExportAttribute導(dǎo)出可提供的服務(wù),使用者通過(guò)ImportAttirbute導(dǎo)入所需要的服務(wù)。它們之間彼此隔離而獨(dú)立,服務(wù)對(duì)象的創(chuàng)建由MEF框架完成,并能提供單例、延遲加載等特性,而無(wú)須我們顯式編碼實(shí)現(xiàn)。
到此這篇關(guān)于.Net插件框架Managed Extensibility Framework的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET?Core基于滑動(dòng)窗口實(shí)現(xiàn)限流控制
這篇文章主要介紹了ASP.NET?Core基于滑動(dòng)窗口實(shí)現(xiàn)限流控制,?AspNetCoreRateLimit是目前ASP.NET?Core下最常用的限流解決方案,下面詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-03-03asp.net Web站點(diǎn)風(fēng)格切換的實(shí)現(xiàn)
Web站點(diǎn)的風(fēng)格切換是很常見(jiàn)、也很受大家歡迎的功能,比如大家熟知的博客園就提供了幾十款風(fēng)格模板供大家選擇。2009-05-05Asp.net中使用PageDataSource分頁(yè)實(shí)現(xiàn)代碼
這篇文章主要介紹asp.net中使用PageDataSource分頁(yè)的方法,需要的朋友可以參考下2013-04-04RadioButtonList綁定圖片及泛型Dictionary應(yīng)用
讀取站點(diǎn)某一目錄的圖片,需要掌握LINQ與泛型Dictionary<TKey,TValue>的使用,本文將介紹RadioButtonList綁定圖片的實(shí)現(xiàn),感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-02-02Visual Studio 2017中找回消失的“在瀏覽器中查看”命令
這篇文章主要為大家詳細(xì)介紹了如何在Visual Studio 2017中找回消失的“在瀏覽器中查看”命令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Hangfire在ASP.NET CORE中的簡(jiǎn)單實(shí)現(xiàn)方法
下面小編就為大家分享一篇Hangfire在ASP.NET CORE中的簡(jiǎn)單實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Mvc動(dòng)態(tài)注冊(cè)HttpModule詳解
本文主要介紹了Mvc動(dòng)態(tài)注冊(cè)HttpModule的方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-03-03