AutoFac文檔
目錄
- 開始
- Registering components
- 控制范圍和生命周期
- 用模塊結構化Autofac
- xml配置
- 與.net集成
- 深入理解Autofac
- 指導
- 關於
- 詞匯表
掃描
autofac可以使用約定在程序集中注冊或者尋找組件。
發現組件
autofac2可以根據用戶指定的規則在程序集中注冊一系列的類型,這種方法叫做convention-driven registration或者掃描。
var dataAccess = Assembly.GetExecutingAssembly();
builder.RegisterAssemblyTypes(dataAccess)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces();
每個RegisterAssemblyTypes方法只能應用一套規則。如果有多套不同的集合要注冊,那就有必要多次調用RegisterAssemblyTypes。
選擇類型
RegisterAssemblyTypes接受程序集的集合。默認情況下,程序集中所有公共具體的類都會被注冊。
如果想要過濾注冊的類型,可以使用Where.向下面這樣:
Where(t => t.Name.EndsWith("Repository"))
如果想要排除某些類型,使用Except():
Except<MyUnwantedType>()
或者,自定義那些已經排除的類型的注冊:
Except<MyCustomisedType>(ct =>ct.As<ISpecial>().SingleInstance())
多個過濾器可以同時使用,這時他們之間是AND的關系
指定服務
RegisterAssemblyTypes這個注冊方法是注冊單個方法的超集,所以類似As的方法也可以用在程序集中,例如
As<IRepository>()
As和Named這兩個方法額外的重載方法接受lambda表達式來決定服務會提供什么樣的類型。
