.net中的DI框架AutoFac簡單介紹
AutoFac是.net程序下一個非常靈活易用,且功能強大的DI框架,本文這里簡單的介紹一下使用方法。
安裝:
Install-Package Autofac
簡單的示例:
static void Main(string[] args) { var builder = new ContainerBuilder(); builder.RegisterType<ConsoleLogger>().As<ILogger>(); var container = builder.Build(); var logger = container.Resolve<ILogger>(); }
簡單的說,AutoFac包括如下兩步:
- 通過 ContainerBuilder.RegisterXXX注冊服務(wù)
- 通過Container.Resolve獲取服務(wù)
如果有某一接口服務(wù)有多個實現(xiàn),可以用如下方式獲取所有服務(wù)。
var loggers = container.Resolve<ILogger[]>();
程序集掃描注冊服務(wù)
我們也可以通過反射的方式掃描程序集,從而實現(xiàn)自動注冊。
var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces();
雖然做法粗暴,但在一些簡單的場景下還是非??焖儆行У?。
MEF
我之前介紹過.net framework下自帶的MEF框架,它和autofac的思路還是大不相同的。
AutoFac偏向于服務(wù)的抽象,無注入,簡潔,透明而且不失強大。
MEF則采用反射的方式,服務(wù)的提供由代碼注入自動完成,更加自動化,但不夠透明,它更側(cè)重于解決一組模塊間的互相依賴,耦合關(guān)系。它用來拆分用它來分析復(fù)雜的UI模塊,或者構(gòu)建插件是非常方便的。
參考文檔:
AutoFac本身功能非常強大,這里只是一個簡單的入門,更多功能可以參考官方文檔。
到此這篇關(guān)于AutoFac框架的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Asp.net response對象與request對象使用介紹
這篇文章主要介紹了Asp.net response對象與request對象使用,需要的朋友可以參考下2014-04-04關(guān)于中g(shù)ridview 字符串截取的方法
在Gridview中,如果你的某一列字符串的長度過長,不做處理的話.那么將顯示的奇丑無比,可以采取設(shè)置樣式,將其顯示為定長,可以在點擊查看的時候,在另一個頁面對其進(jìn)行顯示2013-06-06ASP .NET調(diào)用javascript中Response.Write和ClientScript.RegisterSta
最近在用ASP .NET的code behind 調(diào)用javascript中發(fā)現(xiàn)Response.Write不能拿到form的值,而ClientScript.RegisterStartupScript可以。2010-12-12asp.net 使用ObjectDataSource控件在ASP.NET中實現(xiàn)Ajax真分頁
ASP.NET 3.5中新增加的ListView控件是一個用于頁面數(shù)據(jù)綁定和界面布局的非常棒的控件,它在ASP.NET 2.0 GridView的基礎(chǔ)上做了很多改進(jìn),用戶在使用時可以控制的元素更多,開發(fā)時的靈活性更大了,個人覺得ListView在使用時比DataGrid和GirdView更加順手。2009-11-11ASP.NET Core WebAPI實現(xiàn)本地化(單資源文件)
這篇文章主要介紹了ASP.NET Core WebAPI實現(xiàn)本地化(單資源文件),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06MultiLine 換行后實現(xiàn)讀取不換行的具體思路
輸入內(nèi)容中有換行,保存到數(shù)據(jù)庫,直接查看感覺沒有換行,但查詢結(jié)果“以文本格式顯示結(jié)果”你就會發(fā)現(xiàn) 其實是有換行的,下面與大家分享下具體的解決方法2013-06-06