MEF - импортированный объект в конструкторе имеет значение null

Я использую MEF, чтобы внедрить UnityContainer в плагины в моем приложении.

каждый из плагинов содержит панели.

Хочу перенести контейнер Unity в панели тоже через MEF.

Мне нужно использовать Unity в конструкторе панелей.

Проблема в том, что Unity не инициализируется.

Итак, я использую CompositionContainer.ComposeParts (панель) в плагине после того, как я создал панель. Проблема в том, что я хочу использовать Unity в конструкторе панелей.

Я не хочу отправлять UnityContainer или CompositionContainer в качестве параметра в конструкторе панели.

Благодарность


person Guy    schedule 02.01.2012    source источник
comment
Вы должны опубликовать код того, как вы инициализируете MEF (создание каталогов) и как вы используете атрибуты Imports / Exports.   -  person Toni Parviainen    schedule 02.01.2012


Ответы (1)


вы не разместили код, поэтому я просто предполагаю:

если вы сделаете это так:

public class Bar
{
   [ImportingConstructor]
   public Bar(IMyImportedService service)
   {
      //service should not be null
   }
}

если ты сделаешь это так

public class Bar
{
   [Import]
   private IMyImportedService service;

   public Bar()
   {
      //service should be null, because you have to implement IPartImportsSatisfiedNotificationand use OnImportsSatisfied
   }
}
person blindmeis    schedule 04.01.2012