什么是ResolveAll呢

时间:2008-12-05 07:02:07

标签: .net dependency-injection inversion-of-control castle-windsor

在IOC中ResolveAll做了什么?我知道官方的答案是“解决所有与此类型匹配的有效组件”。这是否意味着它将返回任何实现给定接口的类?

4 个答案:

答案 0 :(得分:10)

它将返回为给定接口注册的所有类。

...并且不等待任何引用被解决。今天咬我了!

答案 1 :(得分:2)

使用Unity,ResolveAll会解析默认映射之外的每个注册映射。

所以如果你注册了:

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

ResolveAll()只会给你一个包含已解析的“Singleton”和“Trans”映射的IEnumerable

答案 2 :(得分:1)

它将返回给定接口注册的所有类。

答案 3 :(得分:0)

如果我有:

container.ResolveAll(new {argument = something})。Where(...)

似乎T的所有组件都被'某些东西'实例化,即使并非所有组件都填满了where子句....谁负责释放这些额外的组件?