autofac支援三種事件:onactivating,onactivated,onrelease。onactivating在註冊元件使用之前會被呼叫,此時可以替換實現類或者進行一些其他的初始化工作,onactivated在例項化之後會被呼叫,onrelease在元件釋放之後會被呼叫。
1234567
891011
1213
1415
1617
public
class
myevent
:idisposable
public
myevent
()public
void
dispose()}
1234567
891011
1213
1415
16
public
void
test_event()}
}
此時的輸出為:
12345
init
input
onactivated
dispose
onrelease
利用事件可以在構造物件之後呼叫物件的方法:
1234567
891011
1213
1415
16
[fact]
public
void
call_method_when_init
()public
class
myclasswithmethod
public
void
add(
intvalue)}
迴圈依賴是個比較頭疼的問題,在autofac中很多迴圈依賴的場景不被支援:
1234567
891011
1213
1415
1617
1819
2021
2223
2425
public
class
classa
}public
class
classb
}[fact]
public
void
circular_dependencies_exception
());
builder
.register(c
=>
newclassa(c
.resolve
<
classb
>()));
icontainer
container
=builder
.build
();assert
.throws
(typeof
(dependencyresolutionexception
),()=>
container
.resolve
<
classa
>());
}
可以部分的解決這種迴圈依賴的問題,前提是classa和classb的生命週期不能都是instanceperdependency
1234567
891011
12
[fact]
public
void
circular_dependencies_ok
()
**:
AutoFac使用方法總結 Part I
autofac是.net平台下的ioc容器產品,它可以管理類之間的複雜的依賴關係。在使用方面主要是register和resolve兩類操作。這篇文章用單元測試的形式列舉了autofac的常用使用方法 使用registertype進行註冊 123 4567 8910 fact public void ...
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...