AutoFac使用方法總結 Part I

2021-06-18 00:31:07 字數 2083 閱讀 1760

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 或...