utofac是.net平台下的ioc容器產品,它可以管理類之間的複雜的依賴關係。在使用方面主要是register和resolve兩類操作。 這篇文章用單元測試的形式列舉了autofac的常用使用方法:
使用registertype進行註冊
[fact]
public void can_resolve_myclass()
註冊為介面
[fact]
public void register_as_inte***ce()
使用lambda表示式進行註冊
[fact]
public void can_register_with_lambda()
帶構造引數的註冊
[fact]
public void register_with_parameter()
帶屬性賦值的註冊
[fact]
public void register_with_property()
);icontainer container = builder.build();
var myclass = container.resolve();
assert.notnull(myclass);
assert.notnull(myclass.property);
}
autofac分離了類的建立和使用,這樣可以根據輸入引數(namedparameter)動態的選擇實現類。
[fact]
public void select_an_implementer_based_on_parameter_value()
else
}).as();
icontainer container = builder.build();
var repository = container.resolve(new namedparameter("type", "test"));
assert.equal(typeof(testrepository),repository.gettype());
}
aufofac也可以用乙個例項來註冊,比如用在單例模式情況下:
[fact]
public void register_with_instance()
註冊open generic型別
[fact]
public void register_open_generic()
對於同乙個介面,後面註冊的實現會覆蓋之前的實現
[fact]
public void register_order()
如果不想覆蓋的話,可以用preserveexistingdefaults,這樣會保留原來註冊的實現。
[fact]
public void register_order_defaults()
可以用name來區分不同的實現,代替as方法
如果乙個類有多個建構函式的話,可以在註冊時候選擇不同的建構函式[fact]
public void register_with_name()
[fact]
public void choose_constructors()
autofac可以註冊乙個assemble下所有的類,當然,也可以根據型別進行篩選
[fact]
public void register_assembly()
AutoFac使用方法總結 Part I
autofac是.net平台下的ioc容器產品,它可以管理類之間的複雜的依賴關係。在使用方面主要是register和resolve兩類操作。這篇文章用單元測試的形式列舉了autofac的常用使用方法 使用registertype進行註冊 123 4567 8910 fact public void ...
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 或...