MEF Konstruktor-Parameter mit Mehreren Konstruktoren
Ich bin seit MEF, und ich habe eine Klasse mit mehreren Konstruktoren, wie diese:
[Export(typeof(ifoo))]
class foo : ifoo {
void foo() { ... }
[ImportingConstructor]
void foo(object par1) { ... }
}
Ich bin mit catalog.ComposeExportedValue()
beim Komponieren zur Versorgung der par1
Wert auf den zweiten Konstruktor:
...
catalog.ComposeExportedValue(par1Value);
catalog.ComposeParts(this);
...
Halten die Komponenten die ich verwende:
[ImportMany(typeof(ifoo))]
public List<Lazy<ifoo, ifoometadata>> FooList { get; set; }
Zu erstellen und das foo
Beispiel bin ich mit der value-Eigenschaft, FooList[0].Value
.
Alles funktioniert gut, außer, dass der zweite Konstruktor der foo
Klasse nie aufgerufen wird. Was ist falsch?
Wie wähle ich den Konstruktor, den ich nutzen möchte, wenn MEF instanziiert die Klasse?
- Haben Sie einen Blick auf stackoverflow.com/questions/2008133/mef-constructor-injection ... es ist nicht genau die gleiche Frage, aber die akzeptierte Antwort wirft ein Licht auf den Import von Konstruktoren, die helfen können.
- ja, in der Tat, ich bin mit der Antwort von Daniel Plaisted, das problem ist ich kann nicht finden, Beispiele von mef-Instanz anlegen über mehrere Konstruktor-Definitionen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
MEF sollten den Konstruktor verwenden Sie den
ImportingConstructorAttribute
auf. Ich bin mir nicht sicher, was passiert, für Sie, ich war nicht in der Lage das Problem zu reproduzieren. Hier ist ein test, der zeigt, wie mit einer ImportingConstructor auf eine Klasse, die auch einen default-Konstruktor:Sind Sie übergeben eine Instanz der foo-Klasse in die ComposeExportedValue Methode? In diesem Fall das Objekt bereits gebaut ist und der Konstruktor nicht aufgerufen werden kann, also wieder MEF ignorieren Sie den Konstruktor Einfuhren.