Wie kann ein mit MEF exportiertes Objekt mit Ninject instanziiert werden?
Meine Anwendung verwendet MEF, um einige Klassen aus einer externen Assembly zu exportieren. Diese Klassen sind für die Konstruktorinjektion eingerichtet. Das Problem, mit dem ich konfrontiert bin, ist, dass MEF versucht, die Klassen zu instanziieren, wenn ich versuche, auf sie zuzugreifen. Gibt es eine Möglichkeit, Ninject für die Instanziierung der Klasse zu sorgen?
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;
AktualisierenEs gibt mehrere Klassen, die @ implementierIMyInterface
und ich möchte diejenige auswählen, die einen bestimmten Namen hat, und Ninject dann eine Instanz davon erstellen lassen. Ich bin mir nicht sicher, ob ich Faulheit will.
[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;
}
}
Mit MEF möchte ich entwederMyClassOne
oderMyClassTwo
und dann muss Ninject eine Instanz von @ bereitstelleMyRepository
undYourRepository
(Beachten Sie, dass diese beiden in einem Ninject-Modul in der Hauptassembly gebunden sind und nicht in der Assembly, in der sie sich befinden.)