Ich muss einige Daten in Zeichenfolge serialisieren. Die Zeichenfolge wird dann in einer speziellen Spalte SerializeData in DB gespeichert.Serialisierung und Versionierung
Ich habe spezielle Klassen erstellt, die für die Serialisierung verwendet werden.
[Serializable]
public class SerializableContingentOrder
{
public Guid SomeGuidData { get; set; }
public decimal SomeDecimalData { get; set; }
public MyEnumerationType1 EnumData1 { get; set; }
}
Serialisierung:
protected override string Serialize()
{
SerializableContingentOrder sco = new SerializableContingentOrder(this);
MemoryStream ms = new MemoryStream();
SoapFormatter sf = new SoapFormatter();
sf.Serialize(ms, sco);
string data = Convert.ToBase64String(ms.ToArray());
ms.Close();
return data;
}
Deserialisierung:
protected override bool Deserialize(string data)
{
MemoryStream ms = new MemoryStream(Convert.FromBase64String(data).ToArray());
SoapFormatter sf = new SoapFormatter();
SerializableContingentOrder sco = sf.Deserialize(ms) as SerializableContingentOrder;
ms.Close();
return true;
}
Jetzt möchte ich Versionierung Unterstützung. Was passiert, wenn ich die Klasse SerializableContingentOrder
ändere. Ich möchte in der Zukunft neue Felder hinzufügen können.
Muss ich zur DataContract-Serialisierung wechseln? Bitte geben Sie mir einen kurzen Ausschnitt?
Siehe MSDN; 'SoapFormatter' ist offiziell veraltet: http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.soap.soapformatter.aspx –
Ich muss ähnliche Frage, aber ein bisschen Erweiterung davon stellen. Die Daten werden sich definitiv ändern. Können wir die Datenstruktur so gestalten, dass sie die nächste Änderung selbst bewältigen kann? –