autofac是.net平台下的ioc容器產品,它可以管理類之間的複雜的依賴關係。在使用方面主要是register和resolve兩類操作。 這篇文章用單元測試的形式列舉了autofac的常用使用方法:
使用registertype進行註冊
1234567
8910
[fact]
public
void
can_resolve_myclass
()
註冊為介面
1234567
8910
[fact]
public
void
register_as_inte***ce
()
使用lambda表示式進行註冊
1234567
8910
[fact]
public
void
can_register_with_lambda
()
帶構造引數的註冊
1234567
89
[fact]
public
void
register_with_parameter
()
帶屬性賦值的註冊
1234567
891011
1213
1415
[fact]
public
void
register_with_property
());
icontainer
container
=builder
.build
();var
myclass
=container
.resolve
<
myclass
>();
assert
.notnull
(myclass
);assert
.notnull
(myclass
.property);}
autofac分離了類的建立和使用,這樣可以根據輸入引數(namedparameter)動態的選擇實現類。
1234567
891011
1213
1415
1617
1819
2021
[fact]
public
void
select_an_implementer_based_on_parameter_value
()else
}).as
<
irepository
>();
icontainer
container
=builder
.build
();var
repository
=container
.resolve
<
irepository
>(
newnamedparameter
("type"
,"test"
));assert
.equal
(typeof
(testrepository
),repository
.gettype
());
}
aufofac也可以用乙個例項來註冊,比如用在單例模式情況下:
1234567
8910
[fact]
public
void
register_with_instance
()
註冊open generic型別
1234567
891011
[fact]
public
void
register_open_generic
()
對於同乙個介面,後面註冊的實現會覆蓋之前的實現
1234567
891011
[fact]
public
void
register_order
()
如果不想覆蓋的話,可以用preserveexistingdefaults,這樣會保留原來註冊的實現。
1234567
891011
[fact]
public
void
register_order_defaults
()
可以用name來區分不同的實現,代替as方法
1234567
891011
1213
[fact]
public
void
register_with_name
()
如果乙個類有多個建構函式的話,可以在註冊時候選擇不同的建構函式
1234567
8910
[fact]
public
void
choose_constructors
()
autofac可以註冊乙個assemble下所有的類,當然,也可以根據型別進行篩選
1234567
891011
12
[fact]
public
void
register_assembly
()
**:
AutoFac使用方法總結 Part II
autofac支援三種事件 onactivating,onactivated,onrelease。onactivating在註冊元件使用之前會被呼叫,此時可以替換實現類或者進行一些其他的初始化工作,onactivated在例項化之後會被呼叫,onrelease在元件釋放之後會被呼叫。123 4567...
AutoFac使用方法總結 Part III
autofac中的生命週期概念非常重要,autofac也提供了強大的生命週期管理的能力。autofac定義了三種生命週期 per dependency single instance per lifetime scope per dependency為預設的生命週期,也被稱為 transient 或...
AutoFac使用方法總結 Part I
utofac是.net平台下的ioc容器產品,它可以管理類之間的複雜的依賴關係。在使用方面主要是register和resolve兩類操作。這篇文章用單元測試的形式列舉了autofac的常用使用方法 使用registertype進行註冊 fact public void can resolve myc...