【发布时间】:2020-03-02 11:02:56
【问题描述】:
我在统一容器中注册为服务的接口的多个实现。在 Prim 5 之前,UnityBootstrapper 工作良好。我能够 ResolveAll 服务实例,并从中选择要进一步使用的实例。
从 Prism 7 开始,我找不到通过 IContainerProvider 解决该类型的所有实例的方法。有任何想法吗?
cc: prism 开发者
【问题讨论】:
我在统一容器中注册为服务的接口的多个实现。在 Prim 5 之前,UnityBootstrapper 工作良好。我能够 ResolveAll 服务实例,并从中选择要进一步使用的实例。
从 Prism 7 开始,我找不到通过 IContainerProvider 解决该类型的所有实例的方法。有任何想法吗?
cc: prism 开发者
【问题讨论】:
要么获取带有GetContainer 扩展名的底层容器,要么最好不要主动解析。最好让容器在不让消费者知道东西来自哪里的情况下注入。
旁注:引导程序仍然存在。被标记为过时并不意味着“不能使用”。
【讨论】:
IEnumerable。
ResolveAll 完全相同。在哪里完成注册并不重要。假设ModuleA 寄存器ControllerA 和ModuleB 寄存器ControllerB 并且一些代码被注入IController[],它将接收ControllerA 和ControllerB 之一的实例,好像某些代码确实ResolveAll<IController>