67

博客圈和微软自己都说 MEF 不是另一个 IoC 容器。

好吧……但是为什么呢?对我来说似乎是一样的。也许它不如 Unity 或Castle Windsor好,但它仍然符合定义,不是吗?

为什么 MEF 不像 Unity 或 Castle Windsor 那样是 IoC 容器?

4

2 回答 2

10

MEF 有潜力,但作为 DI 容器,它缺乏:

  1. 代码作为配置
  2. 自动注册
  3. XML 配置(对我来说不是那么重要)
  4. 自定义生命周期
  5. 拦截

这些东西非常重要。

对于生活方式,它缺乏:

  1. 每张图
  2. Web 请求上下文
  3. 线程上下文
  4. 会话上下文
  5. 汇集
  6. 范围
  7. 自定义参考

参考: - Mark Seemann 的书“.NET 中的依赖注入”

于 2013-07-05T23:22:04.063 回答
8

在我的世界里,DI基于三个维度,对象组合、生命周期管理和拦截。这是其他成熟的 DI 容器,如 Unity、Castle Windsor 和 Ninject 所促进的。MEF 仅支持一维,即对象组合。它做得很好,但 MEF 不支持其余两个维度。

于 2012-10-05T08:09:09.700 回答