Почему именно MEF не является контейнером DI / IoC? - PullRequest
67 голосов
/ 19 октября 2008

В блогосфере и самих Microsoft говорят, что MEF не является еще одним контейнером IoC.

ОК ... но почему? Мне кажется, то же самое. Может быть, он не так хорош, как Unity или Castle Windsor , но все равно соответствует определению, не так ли?

Почему MEF не является контейнером IoC, таким как Unity или Castle Windsor?

Ответы [ 2 ]

10 голосов
/ 06 июля 2013

MEF имеет потенциал , но как контейнер DI ему не хватает:

  1. Код как конфигурация
  2. Авторегистрация
  3. Конфигурация XML (не так важно для меня)
  4. Custom Lifetimes
  5. Перехват

Эти вещи очень важны.

Для образа жизни не хватает:

  1. за график
  2. Контекст веб-запроса
  3. Контекст темы
  4. Контекст сеанса
  5. Пул
  6. Scoped
  7. Пользовательская ссылка

Ссылки: - Книга Марка Симанна «Внедрение зависимостей в .NET»

8 голосов
/ 05 октября 2012

В моем мире DI основан на трех измерениях: состав объекта, управление временем жизни и перехват. Это то, что облегчают другие полноценные DI-контейнеры, такие как Unity, Castle Windsor и Ninject. MEF поддерживает только одно измерение, Композиция объектов. Он делает это довольно хорошо, но остальные два измерения не поддерживаются в MEF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...