Wpf 如何解析IContainerProvider(prism 7+;)中类型的所有实例
我在unity容器中有多个注册为服务的接口实现。直到今年6月5日,UnityBooksTrapper的工作都做得很好。我能够解析服务的所有实例,并在其中选择要进一步使用的实例 从Prism 7开始,我无法找到通过IContainerProvider解析该类型所有实例的方法。有什么想法吗Wpf 如何解析IContainerProvider(prism 7+;)中类型的所有实例,wpf,prism,Wpf,Prism,我在unity容器中有多个注册为服务的接口实现。直到今年6月5日,UnityBooksTrapper的工作都做得很好。我能够解析服务的所有实例,并在其中选择要进一步使用的实例 从Prism 7开始,我无法找到通过IContainerProvider解析该类型所有实例的方法。有什么想法吗 cc:prism开发人员可以使用GetContainer扩展获取底层容器,或者最好不要主动解析。最好让容器在消费者不知道东西从哪里来的情况下注入 旁注:引导程序还在那里。标记为过时并不意味着“不能使用”。谢谢。奇
cc:prism开发人员可以使用
GetContainer
扩展获取底层容器,或者最好不要主动解析。最好让容器在消费者不知道东西从哪里来的情况下注入
旁注:引导程序还在那里。标记为过时并不意味着“不能使用”。谢谢。奇怪的是,这个函数是如何从facade(IContainerProvider)中删除的,因为可能存在消费者需要处理该类型的多个实例的实际情况。如果需要所有注册的类型,则始终可以插入数组或
IEnumerable
。这是一个好主意,但是,它去掉了可扩展性方面。假设您正在加载应用程序的所有加载项。加载项(以DLL的形式)可以在编译后动态删除。在某些地方存在误解,因为注入数组与ResolveAll
完全相同。注册地点无关紧要。假设ModuleA
寄存器ControllerA
和ModuleB
寄存器ControllerB
并且一些代码被IController[]
注入,它将接收ControllerA
的一个实例和ControllerB
的一个实例,就像一些代码在需要添加注入IController[]的代码时就执行了ResolveAll
,扩展性就会丢失。该代码现在依赖于ControllerA和ControllerB。ResolveAll提供松耦合。