[SOLVED] Problem beim Serialisieren von abgeleiteten Klassen
Verfasst: 15.02.2013, 13:21
Ich habe ein ziemlich allgemeines Interface für Konfigurationsdaten und auch noch eine abstrakte Basisklasse, die das Interface nutzt. Plugin-DLLs nutzen diese Basisklasse und leiten davon ihre eigenen Konfigurationdaten-Klassen ab. Diese Plugin-DLLs werden dynamisch geladen. Dann möchte ich Daten serialisieren und deserialisieren (mit XmlSerializer), die unter anderem auch die spezifischen Konfigurationsdaten enthalten.
Prinzipiell ist dies kein Problem. Ich ermittle von allen geladenen Plugins alle Konfigurationsklassen, indem ich alle Klassen rauslese, die das Interface nutzen. Diese Typen packe ich in das extraTypes-Array des XmlSerializer-Konstruktors und schon läuft die Serialisierung und Deserialisierung problemlos.
Mein Problem ist nun, dass verschiedene Plugins ihre Konfigurationdaten-Klasse gleich nennen können, z.B. MeinPlugin1.Config und MeinPlugin2.Config. Da beim Serialisieren jedoch kein Namespace, sondern nur der Typname im XML hinterlegt wird erhalte ich beim Deserialisieren einen Fehler, da nicht klar ist welcher Typ gemeint ist. Beide Typen sind ja im extraTypes-Array vorhanden.
Weiß jemand, wie ich es hinbekomme, dass der Namespace mit ins XML geschrieben wird oder vielleicht auch ein anderer Weg, der das Problem umgeht?
Im Netz hab ich nur Lösungen dafür gefunden wie man abgeleitete Klassen serialisiert, aber das geht ja wie gesagt schon.
Danke
Prinzipiell ist dies kein Problem. Ich ermittle von allen geladenen Plugins alle Konfigurationsklassen, indem ich alle Klassen rauslese, die das Interface nutzen. Diese Typen packe ich in das extraTypes-Array des XmlSerializer-Konstruktors und schon läuft die Serialisierung und Deserialisierung problemlos.
Mein Problem ist nun, dass verschiedene Plugins ihre Konfigurationdaten-Klasse gleich nennen können, z.B. MeinPlugin1.Config und MeinPlugin2.Config. Da beim Serialisieren jedoch kein Namespace, sondern nur der Typname im XML hinterlegt wird erhalte ich beim Deserialisieren einen Fehler, da nicht klar ist welcher Typ gemeint ist. Beide Typen sind ja im extraTypes-Array vorhanden.
Weiß jemand, wie ich es hinbekomme, dass der Namespace mit ins XML geschrieben wird oder vielleicht auch ein anderer Weg, der das Problem umgeht?
Im Netz hab ich nur Lösungen dafür gefunden wie man abgeleitete Klassen serialisiert, aber das geht ja wie gesagt schon.
Danke