2008-10-19 89 views
66

有人在博客上和微軟自己說MEF不是另一個IoC容器。爲什麼MEF不是DI/IoC容器?

好的......但是爲什麼?這對我來說似乎是一樣的。也許它不如Unity或Castle Windsor,但它仍然符合定義,不是嗎?

爲什麼MEF不是像Unity或Castle Windsor這樣的IoC容器?

+2

你至少可以讓我保持一個給予好評的鏈接放牧代碼採訪:) – Kev 2009-02-02 02:09:07

+0

當然千電子伏。對不起回合,但格倫在漢斯分鐘回答更詳細。你發佈的採訪很好,但留給我的問題比答案還多。 – CVertex 2009-02-02 02:26:58

回答

8

在我的世界DI基於三個維度,對象構成,生命週期管理和攔截。這就是其他完整的DI容器,如Unity,Castle Windsor和Ninject所促進的。 MEF僅支持一個維度,即對象組合。它做得很好,但其餘兩個維度在MEF中不受支持。

9

MEF具有潛力,但作爲一個DI容器,它缺乏:

  1. 守則配置
  2. 自動註冊
  3. XML配置(對我來說不是那麼重要)
  4. 自定義生存期
  5. 截取

這些事情非常重要。

生活方式缺乏:

  1. 每圖
  2. 的Web請求上下文
  3. 線程上下文
  4. 會話背景
  5. 彙集
  6. 作用域
  7. 定製引用

參考文獻:馬克 - 西曼的著作「依賴注入.NET」