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