6

在IOC的ResolveAll做什麼?我知道官方答案是「解決與此類型匹配的所有有效組件」。這是否意味着它會返回任何實現給定接口的類?Whats ResolveAll do

+0

IOC在這種情況下代表什麼? – 2010-04-28 08:03:11

回答

1

它將返回給定接口的所有類註冊

10

它將返回爲給定接口註冊的所有類。

...並沒有等待任何引用來解決。今天有點傷我!

+0

+1爲重要條件:) – 2009-06-30 16:35:13

+2

不**正好**是真的。它將返回已註冊給定服務的組件以及任何其他可分配的服務。所以,如果你要求`container.ResolveAll ();`它也會返回註冊爲`IControllerWithCache`的服務。 – 2010-04-28 06:17:18

2

使用Unity,ResolveAll可解決接口的每個註冊映射,但默認映射爲

因此,如果您註冊:

container.RegisterType<IInterface, ActualClassOne>(new ContainerControlledLifetimeManager()); 
container.RegisterType<IInterface, ActualClassOne>("Singleton", new ContainerControlledLifetimeManager()); 
container.RegisterType<IInterface, ActualClassOne>("Trans", new TransientLifetimeManager()); 

ResolveAll()只會給你包含解決 「單身」 和 「反式」 映射

0

如果我有一個IEnumerable:

容器。 ResolveAll(new {argument = something})。其中(...)

看起來T的所有組件都被「實例化」了,即使並不是所有的mponents完整填寫where子句...誰照顧釋放這些額外的組件?