我正在使用MVVMlight工具包开发MVVM WPF应用程序。
它附带了SimpleIoc容器,主要用于设计时/运行时分离(如果我错了,请纠正我)。
我的问题是,除此之外,它还有其他作用吗?
我需要国际奥委会为项目的其他部分,很可能我会使用类似Ninject的东西。
也很可能使它可扩展,我将使用MEF。
然后在应用程序中将有3个独立的IOC(来自mvvmlight的SimpleIoc、Ninject和MEF)。这是否可行和必要?
一个能做另外两个的工作吗?或者我真的需要他们三个来覆盖不同的领域。
有什么最佳实践建议吗?
提前谢谢。
再次投票给Prism。对于Prism中的容器,我倾向于只选择一个IoC容器,通常我会选择MEF。它适用于他们所说的所有功能(可发现性、插件架构、重组等)。我用它来连接我的应用程序,将视图模型与视图绑定,并让区域导航为我实例化。
Unity更好的一个领域是动态对象创建——您可以从Unity容器中请求特定类型的对象,并返回一个满足依赖关系的对象。但是GlenBlock制作了一个很好的小工具,叫做CompositionInitializer,它允许您满足使用MEF创建的任何类的导入。这里和这里的博客文章描述了如何使用它以及在哪里获得它。
在您的情况下,我会使用Prism。它比MVVM轻得多。是的,它也更大,所以如果你不制作模块化应用程序,你只能选择Unity IOC,这可能是最好的容器之一。如果你不止一个,这取决于你所采取的架构问题的方法。基本上,一个容器应该绰绰有余。