.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注冊服務
- 通過Container.Resolve獲取服務
如果有某一接口服務有多個實現(xiàn),可以用如下方式獲取所有服務。
var loggers = container.Resolve<ILogger[]>();
程序集掃描注冊服務
我們也可以通過反射的方式掃描程序集,從而實現(xiàn)自動注冊。
var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces();
雖然做法粗暴,但在一些簡單的場景下還是非常快速有效的。
MEF
我之前介紹過.net framework下自帶的MEF框架,它和autofac的思路還是大不相同的。
AutoFac偏向于服務的抽象,無注入,簡潔,透明而且不失強大。
MEF則采用反射的方式,服務的提供由代碼注入自動完成,更加自動化,但不夠透明,它更側重于解決一組模塊間的互相依賴,耦合關系。它用來拆分用它來分析復雜的UI模塊,或者構建插件是非常方便的。
參考文檔:
AutoFac本身功能非常強大,這里只是一個簡單的入門,更多功能可以參考官方文檔。
到此這篇關于AutoFac框架的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Asp.net response對象與request對象使用介紹
這篇文章主要介紹了Asp.net response對象與request對象使用,需要的朋友可以參考下2014-04-04ASP .NET調用javascript中Response.Write和ClientScript.RegisterSta
最近在用ASP .NET的code behind 調用javascript中發(fā)現(xiàn)Response.Write不能拿到form的值,而ClientScript.RegisterStartupScript可以。2010-12-12asp.net 使用ObjectDataSource控件在ASP.NET中實現(xiàn)Ajax真分頁
ASP.NET 3.5中新增加的ListView控件是一個用于頁面數據綁定和界面布局的非常棒的控件,它在ASP.NET 2.0 GridView的基礎上做了很多改進,用戶在使用時可以控制的元素更多,開發(fā)時的靈活性更大了,個人覺得ListView在使用時比DataGrid和GirdView更加順手。2009-11-11ASP.NET Core WebAPI實現(xiàn)本地化(單資源文件)
這篇文章主要介紹了ASP.NET Core WebAPI實現(xiàn)本地化(單資源文件),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06MultiLine 換行后實現(xiàn)讀取不換行的具體思路
輸入內容中有換行,保存到數據庫,直接查看感覺沒有換行,但查詢結果“以文本格式顯示結果”你就會發(fā)現(xiàn) 其實是有換行的,下面與大家分享下具體的解決方法2013-06-06