Laden...

MEF/EF: Datenübergabe an Plugins

Erstellt von Tris vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.791 Views
T
Tris Themenstarter:in
18 Beiträge seit 2009
vor 13 Jahren
MEF/EF: Datenübergabe an Plugins

Hallo,

in meinem Programm würde ich gern die Berichtsgenerierung (ich nutze hierzu PDFSharp/MigraDoc) in Plugins auslagern (je Bericht eine dll). Dazu nutze ich MEF, wobei ich ein Verzeichnis mit dll's bei Programmstart einlese und so die Pluginliste erstelle.

Für Datenbankabfragen etc. nutze ich das EF 4. Durch den Nutzer ausgewählte Datensätze möchte ich als Parameter eines RelayCommands an ein Plugin übergeben, womit dort dann ein Bericht generiert werden kann.

Das alles funktioniert soweit schonmal. Für mich gäbe es jetzt zwei Möglichkeiten, die mir einfielen, wie der Zugriff auf Eigenschaften der übergebenen Datensätze machbar wäre (da das Plugin die durch EF generierten Klassen nicht kennt, ist ein cast ja leider nicht möglich):

  1. Zugriff mittels einer generischen Methode, die einen Datensatz (als object) entgegennimmt und durch Reflection das angeforderte Property (wird als Parameter übergeben) zurückgibt

  2. Abbildung der durch das EF erzeugten Klassen in Interfaces / (Hilfs-)Klassen. Diese kämen in eine eigenständige dll (bpsp. PluginHelper.dll), die vom Hauptprogramm sowie den Plugins verwendet werden würde. Dadurch könnte ich nach der Übergabe von Daten zum Plugin wie von Intellisense gewohnt auf deren Eigenschaften zugreifen.

Pkt. 2 wäre anfangs zwar deutlich mehr Arbeit, da diverse EF - Klassen dann in Interfaces und Klassen abgebildet werden müssten, würde aber den Zugriff ohne die in Pkt. 1 genannte generische Methode ermöglichen.

Wie würdet ihr sowas umsetzen? Alles zu kompliziert? Gibt es andere, einfachere, Lösungsansätze?

Gruß, Tris

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo Tris,

Methode 2 wäre sicherlich die sauberste.

Für den Anfang sollte es aber IMHO reichen, die EF-Klassen einfach in einer separaten DLL generieren zu lassen, die dann von überall referenziert wird.
Dann kannst du bereits vollständig typsicher arbeiten.