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

时间:2013-02-07 06:32:14

标签: wpf mvvm inversion-of-control mef extensible

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

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

我的问题是它除此之外还做了什么吗?

我需要IOC用于程序的其他部分,我很可能会使用像Ninject这样的东西。

也很可能使其可扩展我将使用MEF。

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

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

任何最佳做法建议?

提前致谢。

2 个答案:

答案 0 :(得分:1)

对棱镜的另一次投票。对于Prism中的容器,我倾向于选择一个IoC容器 - 我通常选择MEF。它适用于他们所说的所有事情(可发现性,插件架构,重构等)。我使用它来连接我的应用程序,将视图模型绑定到视图,并让区域导航为我实例化。

Unity更好的一个领域是动态对象创建 - 您可以从unity容器请求特定类型的对象,并获取满足依赖关系的对象。但是Glen Block制作了一个很好的小工具叫做CompositionInitializer,它允许你满足使用MEF创建的-any-类的导入。博客文章herehere描述了如何使用它以及从何处获取它。

答案 1 :(得分:0)

在你的情况下,我会使用Prism。它比MVVM灯要成熟得多。是的,它也更大,所以如果你不会制作模块化应用程序,你只能选择Unity IOC,这可能是最好的容器之一。如果你不止一个,它取决于你采取的架构问题的方法。基本上一个容器应该绰绰有余。