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