我有一个 Prism 项目,其代码是我从各种来源获得的,一切都运行良好,但我注意到在某些模块中我注入了
IContainer container
在我注入的其他模块中
IUnityContainer container
IContainer似乎只有组件,添加和删除,而IUnityContainer有几十种方法。
我经常将IContainer更改为IUnityContainer,以便我可以使用后者的解析方法。 这两者有什么区别,为什么我要使用IContainer?
答案 0 :(得分:2)
这些实际上是两个不同的目的。
IUnityContainer是一个依赖注入容器,它支持在依赖注入/服务位置场景中需要执行的所有操作,例如BuildUp,Resolve,Register等。您可以阅读有关Unity的更多信息(实际上是这里是企业库的一部分,而CAG使用 来到这里:Unity on Codeplex
IContainer用于为IComponents对象创建通用容器。它被许多组件使用,并且位于System.ComponentModel中的.NET Framework中。它与Unity或CAG无直接关系。虽然你可以间接地在WPF中使用IComponents,但我认为这是更具Windows特定性和更少WPF的东西。 IContainer
在进行任何类型的依赖注入时,您应该使用IUnityContainer,而不是IContainer。