AutoFac使用方法總結 Part I

2021-06-16 12:51:13 字數 3280 閱讀 3521

autofac是.net平台下的ioc容器產品,它可以管理類之間的複雜的依賴關係。在使用方面主要是register和resolve兩類操作。 這篇文章用單元測試的形式列舉了autofac的常用使用方法:

使用registertype進行註冊

123

4567

8910

[fact]

public

void

can_resolve_myclass

()

註冊為介面

123

4567

8910

[fact]

public

void

register_as_inte***ce

()

使用lambda表示式進行註冊

123

4567

8910

[fact]

public

void

can_register_with_lambda

()

帶構造引數的註冊

123

4567

89

[fact]

public

void

register_with_parameter

()

帶屬性賦值的註冊

123

4567

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)動態的選擇實現類。

123

4567

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也可以用乙個例項來註冊,比如用在單例模式情況下:

123

4567

8910

[fact]

public

void

register_with_instance

()

註冊open generic型別

123

4567

891011

[fact]

public

void

register_open_generic

()

對於同乙個介面,後面註冊的實現會覆蓋之前的實現

123

4567

891011

[fact]

public

void

register_order

()

如果不想覆蓋的話,可以用preserveexistingdefaults,這樣會保留原來註冊的實現。

123

4567

891011

[fact]

public

void

register_order_defaults

()

可以用name來區分不同的實現,代替as方法

123

4567

891011

1213

[fact]

public

void

register_with_name

()

如果乙個類有多個建構函式的話,可以在註冊時候選擇不同的建構函式

123

4567

8910

[fact]

public

void

choose_constructors

()

autofac可以註冊乙個assemble下所有的類,當然,也可以根據型別進行篩選

123

4567

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