在IOC中,
ResolveAll
是什么意思?我知道官方答案是“解析与此类型匹配的所有有效组件。”这是否意味着它将返回实现给定接口的任何类?ResolveAll
是什么意思?我知道官方答案是“解析与此类型匹配的所有有效组件。”这是否意味着它将返回实现给定接口的任何类?它将返回已为给定接口注册的所有类。
...并且没有等待任何引用被解决。这个问题今天让我碰了一鼻子灰!
container.ResolveAll<IController>();
,它也将返回注册为 IControllerWithCache
的服务。 - Krzysztof KozmicDynamicParameters
提供的)。只有在这种尝试失败后,它才会忽略该组件并移动到下一个组件。 - Krzysztof Kozmic使用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。
它将返回为给定接口注册的所有类。