为什么MEF不是DI / IoC容器?

时间:2008-10-19 15:47:41

标签: .net dependency-injection

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

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

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

2 个答案:

答案 0 :(得分:10)

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

  1. 代码配置
  2. 自动注册
  3. XML配置(对我来说不那么重要)
  4. 自定义生命周期
  5. 拦截
  6. 这些事情非常重要。

    对于生活方式,它缺乏:

    1. 每张图
    2. Web请求上下文
    3. 线程上下文
    4. 会话背景
    5. 汇集
    6. Scoped
    7. 自定义参考
    8. 参考文献: - Mark Seemann的书“.NET中的依赖注入”

答案 1 :(得分:8)

在我的世界中,DI基于三个维度,即对象组合,终身管理和拦截。这是其他完整的DI容器,如Unity,Castle Windsor和Ninject的便利。 MEF仅支持一维,即对象组合。它做得很好,但MEF不支持剩余的两个维度。