在IOC中ResolveAll
做了什么?我知道官方的答案是“解决所有与此类型匹配的有效组件”。这是否意味着它将返回任何实现给定接口的类?
答案 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子句....谁负责释放这些额外的组件?