0

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

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

我的问题是除此之外它还有什么作用吗?

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

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

那么应用程序中就会有 3 个独立的 IOC 事物(来自 mvvmlight、Ninject 和 MEF 的 SimpleIoc)。这是可行和必要的吗?

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

有什么最佳实践建议吗?

提前致谢。

4

2 回答 2

1

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

Unity 更好的一个领域是动态对象创建——您可以从统一容器请求特定类型的对象,然后取回满足依赖关系的对象。但是有一个很好的小工具是 Glen Block 制作的,称为 CompositionInitializer,它允许您满足使用 MEF 创建的任何类的导入。此处此处的博客文章描述了如何使用它以及从哪里获得它。

于 2013-02-12T07:52:55.337 回答
0

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

于 2013-02-07T07:25:42.237 回答