据博客圈和微软自己说,MEF不是另一个IoC容器.
好的......但为什么呢?对我来说似乎是一样的.也许它不如Unity或Castle Windsor好,但它仍然符合定义,不是吗?
为什么MEF不是像Unity或Castle Windsor这样的IoC容器?
MEF有潜力,但作为DI容器,它缺乏:
代码为配置
自动注册
XML配置(对我来说不是那么重要)
自定义生命周期
截击
那些事情非常重要.
对于生活方式,它缺乏:
每个图表
Web请求上下文
线程上下文
会话背景
汇集
作用域
自定义参考
参考文献: - Mark Seemann的书".NET中的依赖注入"
在我的世界中,DI基于三个维度,即对象组合,生命周期管理和拦截.这是其他完整的DI容器,如Unity,Castle Windsor和Ninject的便利.MEF仅支持一维,即对象组合.它做得很好,但MEF不支持剩余的两个维度.