Ich entwickle wpf app mit MVVM Design. Als MVVM-Framework verwende ich Caliburn Micro. Service habe ich in der externen Montage, und es ist in Ansicht Modelle Klassen mit MEF injiziert.Inject viele Klassen in Ansicht Modell Klasse
Problem in Service, den ich viele kleine Klasse haben, versuche ich SOLID principe respektieren.
[Export(typeof(IClassA)]
public class ClassA : IClassA
{}
[Export(typeof(IClassB)]
public class ClassB : IClassB
{}
[Export(typeof(IClassC)]
public class ClassC : IClassC
{}
//...
[Export(typeof(IClassK)]
public class ClassK : IClassK
{}
Klassen zählen etwa 12-15.
Ich brauche diese Klassen im Hinblick auf Modellklasse verwenden. Also ich benutze dies:
public class MyViewModelClass
{
private interface IClassA _a;
private interface IClassB _b;
private interface IClassC _c;
//...
private interface IClassK _k;
[ImportingConstructor]
public MyViewModelClass(IClassA a, IClassB b, IClass c, ..., IClassK k)
{
_a=a; _b=b; _c=c; ... _k=k
}
}
Ich weiß nicht, dass dieser Weg richtig ist. Oder es existiert etwas Elegantes, Einfaches. Danke für Ihre Meinung und Ratschläge.
OnImportsSatisfied wird nur aufgerufen, wenn alle Importe erfolgreich waren. Im Grunde wäre der Code, der in dieser Methode verwendet wird, der Code, den Sie in Ihren Konstruktor setzen, um Ihr Objekt normalerweise in Ihrem Konstruktor zu initialisieren. Da die Importe in Ihrem Konstruktor nicht verfügbar sind, können Sie sie erst verwenden, wenn diese Methode aufgerufen wird. Wenn Importe nicht erfüllt werden können, werden die normalen MEF-Ausnahmen ausgelöst, die Sie auf fehlende Exporte hinweisen. –
Oki, Danke für die Erklärung –