Мое приложение использует 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 в основной сборке и а не сборку, в которой они находятся)