Ich hatte in letzter Zeit ein paar Fragen zum MEF, aber hier ist die wichtigste: Ist es wirklich alles oder nichts, wie es scheint?
Meine grundlegende Anwendungsstruktur ist einfach eine Anwendung, mehrere gemeinsam genutzte Bibliotheken, die als Singletons gedacht sind, und mehrere verschiedene Plugins (die unterschiedliche Schnittstellen implementieren können). Die App lädt die Plugins, und sowohl die App als auch alle Plugins müssen auf die gemeinsam genutzten Bibliotheken zugreifen.
Mein erster Versuch mit MEF war ziemlich erfolgreich, obwohl ich einige dumme Fehler gemacht habe, weil ich so viele verschiedene Dinge ausprobiert habe, dass ich manchmal einfach durcheinander kam. Aber am Ende habe ich gestern Abend meine kleine Testanwendung mit MEF, einigen gemeinsamen Bibliotheken und einem Plugin zum Laufen gebracht.
Jetzt gehe ich zur Zielanwendung über, die ich bereits beschrieben habe. Und es ist die mehrere Plugins Teil, der ein bisschen besorgt sein hat.
Meine bestehende Anwendung unterstützt bereits mehrere Plugins mit unterschiedlichen Schnittstellen durch die Verwendung von Reflection. Ich muss in der Lage sein, jedes Plugin eindeutig zu identifizieren, damit der Benutzer eines auswählen und das erwartete Verhalten dieses Plugins abrufen kann. Das Problem ist, dass ich nicht weiß, wie dies noch zu tun... aber das ist das Thema einer anderen Frage.
Idealerweise würde ich in der Lage sein, meine bestehenden Plugin-Loader zu nehmen und verwenden Sie es als-is, während auf MEF, die gemeinsame Bibliothek Auflösung zu tun verlassen. Das Problem ist, ich kann nicht scheinen, um MEF zu bekommen, um sie zu laden (d.h. ich bekomme eine CompositionException beim Aufruf ComposeParts()), es sei denn, ich auch MEF verwenden, um das Plugin zu laden. Und wenn ich dies tue, gut... dann muss ich wissen, wie sie zu verfolgen, wie sie geladen werden, so dass der Benutzer eine aus einer Liste von Plugins auswählen kann.
Welche Erfahrungen haben Sie mit dem Versuch gemacht, diese Ansätze zu kombinieren?