为什么MEF不是DI / IoC容器?
据博客和微软自己说,MEF不是另一个IoC容器。
好的…但是为什么? 对我来说似乎也是一样。 也许它不如Unity或Castle Windsor ,但它仍然符合定义,不是吗?
为什么MEF不是像Unity或Castle Windsor这样的IoC容器?
MEF有潜力 ,但是作为DI容器,缺乏:
- 代码作为configuration
- 自动注册
- XMLconfiguration(对我不重要)
- 定制的生命周期
- 截击
这些事情是非常重要的。
对于生活方式,它缺乏:
- 按图表
- Web请求上下文
- 线程上下文
- 会话上下文
- 汇集
- 作用域
- 自定义参考
参考文献: – Mark Seemann的书“.NET中的dependency injection”
在我的世界,DI基于三个维度:对象构成,生命周期pipe理和拦截。 这是其他完整的DI容器,如Unity,Castle Windsor和Ninject所促成的。 MEF只支持一个维度,即对象组合。 这样做很好,但其余的两个维度在MEF中不被支持。