在WPF MVVM应用程序中使用多个IOC

在WPF MVVM应用程序中使用多个IOC,wpf,mvvm,inversion-of-control,mef,extensible,Wpf,Mvvm,Inversion Of Control,Mef,Extensible,我正在使用MVVMlight工具包开发一个MVVM WPF应用程序 SimpleIoc容器主要用于设计时/运行时分离(如果我错了,请纠正我) 我的问题是除此之外它还能做什么 我需要国际奥委会为该计划的其他部分,很可能我会使用类似Ninject的东西 也很可能使它可扩展,我将使用MEF 然后,应用程序中将有3个独立的IOC组件(来自mvvmlight的SimpleIoc、Ninject和MEF)。这是否可行和必要 一个可以做另外两个的工作,或者我真的需要他们三个来覆盖不同的领域 有什么最佳实践建议

我正在使用MVVMlight工具包开发一个MVVM WPF应用程序

SimpleIoc容器主要用于设计时/运行时分离(如果我错了,请纠正我)

我的问题是除此之外它还能做什么

我需要国际奥委会为该计划的其他部分,很可能我会使用类似Ninject的东西

也很可能使它可扩展,我将使用MEF

然后,应用程序中将有3个独立的IOC组件(来自mvvmlight的SimpleIoc、Ninject和MEF)。这是否可行和必要

一个可以做另外两个的工作,或者我真的需要他们三个来覆盖不同的领域

有什么最佳实践建议吗


提前谢谢。

在你的情况下,我会使用。它比MVVM light成熟得多。是的,它也更大,所以如果你不制作模块化应用程序,你只能使用Unity IOC,它可能是最好的容器之一。如果您选择了多个,这取决于您采取的解决体系结构问题的方法。基本上一个容器就足够了。

再投票给Prism。对于Prism中的容器,我倾向于只选择一个IoC容器——我通常选择MEF。它适用于他们所说的所有事情(可发现性、插件架构、重新编译等)。我用它来连接我的应用程序,将视图模型与视图绑定,并让区域导航为我实例化一些东西


Unity更好的一个方面是动态对象创建——您可以从Unity容器请求特定类型的对象,并获得满足依赖关系的对象。但是Glen Block制作了一个很好的小工具,叫做CompositionInitializer,它允许您满足使用MEF创建的任何类的导入。博客帖子,并描述如何使用它以及在哪里获得它。

您还可以使用MEFContrib扩展MEFContrib.Integration.Unity将Unity与MEF集成。但我不确定它是否是最新的。我只使用了与Autofac的集成。