Как создать экземпляр экспортированного объекта MEF с помощью Ninject?

Мое приложение использует MEF для экспорта некоторых классов из внешней сборки. Эти классы настроены для внедрения конструктора. Проблема, с которой я столкнулся, заключается в том, что MEF пытается создать экземпляры классов, когда я пытаюсь получить к ним доступ. Есть ли способ, чтобы Ninject позаботился о создании экземпляра класса?

IEnumerable<Lazy<IMyInterface>> controllers = 
    mefContainer.GetExports<IMyInterface>();

// The following line throws an error because MEF is 
// trying to instantiate a class that requires 5 parameters
IMyInterface firstClass = controllers.First().Value;

Обновление:

Есть несколько классов, реализующих IMyInterface , и я хотел бы выбрать тот, у которого есть определенное имя а затем попросите Ninject создать его экземпляр. Я не совсем уверен, хочу ли я лени.

[Export(typeof(IMyInterface))]
public class MyClassOne : IMyInterface {

     private MyRepository one;
     private YourRepository two;

     public MyClassTwo(MyRepository repoOne, YourRepository repoTwo) {
            one = repoOne;
            two = repoTwo;
     }         
}

[Export(typeof(IMyInterface))]
public class MyClassTwo : IMyInterface {

     private MyRepository one;
     private YourRepository two;

     public MyClassTwo(MyRepository repoOne, YourRepository repoTwo) {
            one = repoOne;
            two = repoTwo;
     }


}

Используя MEF, я хотел бы получить либо MyClassOne , либо MyClassTwo , а затем попросить Ninject предоставить экземпляр MyRepository и YourRepository (Обратите внимание, что эти двое связаны в модуле Ninject в основной сборке, а не в сборке, в которой они находятся)

10
задан Omar 10 September 2010 в 04:49
поделиться