我正在开始一个新的个人Prism 4项目。参考实现目前使用Unity。
我想知道我是否应该使用MEF,或者只是保持Unity。
我知道有一些讨论提到这两个是不同的,它们确实重叠,但是如果我一直选择Unity,我会错过吗?
答案 0 :(得分:23)
同时查看the documentation:
Prism Library提供两种选择 对于依赖注入容器: 团结或MEF。棱镜是可扩展的, 从而允许其他容器 用一点点代替 工作。 Unity和MEF都提供了 相同的基本功能 依赖注入,即使它们 工作方式截然不同
两个容器提供的一些功能包括:
Unity提供了几个 MEF没有的能力:
MEF提供了几个 Unity没有的功能:
答案 1 :(得分:7)
我目前正在进行同样的调查。我上周参加了雷德蒙德的p& p研讨会。我有机会与一些p& p人聊天。
<强> MEF 强>
+ .net的一部分,不需要额外的库
+在可扩展性,模块化方案方面非常强大
- 更通用的方法,对DI场景不太灵活
- 您需要使用属性进行装饰,您的代码将粘贴到MEF
Unity
+ DI场景非常灵活
+如果您坚持使用ctor注射并避免使用命名实例,那么您 不需要使用任何属性。最 您的系统不依赖于Unity
- 不支持可扩展性,模块化方案
- 需要部署第三方库
我认为一个好主意是使用MEF进行扩展(管理应用程序的模块,本地化注册)并使用Unity进行DI。
答案 2 :(得分:0)
嗯,这必须要明确MEF实现控制反转,但它不是它的一部分,所以这意味着它们不相同,有区别,当我们有静态依赖并且MEF提供时我们使用统一我们有动态依赖。
MEF还为我们提供了可扩展性,通过它我们可以引入端口类型机制,还可以指定可以通过该端口进行交互的组件类型。 可以从MSDN Document
了解更多信息