Autofac簡單介紹

Nicholas Blumhardt經過了2年多的開發,設計和試驗,Autofac發佈了第二版,針對1.4版本進行了重組,提供了更好的開發體驗,你可以到這裏下載正式的版本。

2.1版本也帶來許多新特性:

1. 組件發現:Autofac 2可以從一個程序集的註冊類型設置根據用戶指定的規則:

var dataAccess = Assembly.GetExecutingAssembly();
builder.RegisterAssemblyTypes(dataAccess)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces();

RegisterAssemblyTypes方法將Repository模式的數據訪問接口類都註冊了,語法非常的簡單。

2.類型關係:Autofac通過自動支持小型,有重點,強類型的包裝,來表達動態的依賴關係。類型關係如下:

Relationship Adapter Type Meaning
A needs a B None Dependency
A needs a B at some point in the future Lazy<B> Delayed instantiation
A needs a B until some point in the future Owned<B> Controlled lifetime
A needs to create instances of B Func<B> Dynamic instantiation
A provides parameters of types X and Y to B Func<X,Y,B> Parameterisation
A needs all the kinds of B IEnumerable<B> Enumeration
A needs to know X about B before using it Meta<T> and Meta<B,X> Metadata interrogation

3. 具體參看文章The Relationship Zoo.
組件元數據:.NET 4版本的Autofac 2.1支持類似於Managed Extensibility Framework (MEF)的功能。.NET 3.5(以及4.0)版本的提供了一個弱類型的Meta<T>類
集成Managed Extensibility Framework (MEF),具體內容參看Autofac MEF integration wiki page,有一篇博客Hosting MEF Extensions in an IoC Container對這個架構進行了深入的討論。


2.1版本不僅帶來了許多新特性,而且對1.4版本也作了很大的改進:

泛型現在是一等公民– Autofac 使用合適的泛型類型來解決通用的服務
激活事件的參數實例是強類型的,例如 builder.RegisterType<Foo>().OnActivating(e => e.Instance.Start()).
ASP.NET MVC的Controller註冊更靈活和更簡單,通過方法RegisterControllers() 進行註冊,參看文章MVC Integration Changes in Autofac Beta 2.1.6.
默認的Scope更改爲單件(Singleton)而不是factory
支持“Resolve Anything”
API 文檔可以通過google進行搜索,例如
http://www.google.com.au/search?q=site:api.autofac.org+ILifetimeScope

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章