Abwärtskompatibilitätsproblem bei Serialize



  • Ich hab eine Klasse, deren Objekte vor dem Speichern und Laden mit BinaryFormatter.Serialize und BinaryFormatter.Deserialize bearbeitet werden. Nun wollte ich diese Klasse innerhalb meiner Solution gern in ein anderes Projekt auslagern. Aber wenn er dann Daten aus einer Datei lädt, die mit einer alten Version des Programms erstellt wurden, schmiert er ab, weil der Typ nicht mehr kompatibel ist.

    Am Code selbst wurde überhaupt nichts geändert. Aber wenn die Klasse im Projekt MainProject liegt und ich die Daten mit dieser Version des Programms abspeichere, dann vor dem nächsten Kompiliervorgang meine Klasse von MainProject nach HelpClasses verschiebe (selbst der Namespace blieb identisch), erkennt .NET das ganze nicht mehr als den Typ, den er serialisiert hat und gibt eben eine Meldung eines inkompatiblen Datentyps.

    Kann man das irgendwie ändern? Wie kann ich es hinkriegen, dass der Datentyp, solange sich an seinen Daten im Quellcode selbst nichts geändert hat, trotzdem korrekt erkannt wird, auch wenn er vorher in einem anderen Projekt lag?



  • Ich hab zwar keine Lösung für dein Problem parrat jedoch aber einen Vorschlag.

    Mit dem XmlSerializer sollte dein vorhaben klappen, und die Daten wären sogar lesbar. Wäre das vielleicht eine alternative für dich?



  • Nein, leider nicht. Wie gesagt: Die zukünftigen Versionen müssen kompatibel zu dem sein, was das Programm bisher gespeichert hat. (Das ganze wurde schon an mehreren Stellen eingesetzt. Wenn ich die Gelegenheit hätte, eine komplett andere Klasse zu nehmen, hätte ich ja auch die Gelegenheit gehabt, einfach die Klasse im Projekt zu verschieben.)


Anmelden zum Antworten