C#-Serialisierungspraktiken von Objekten mit benutzerdefinierten Typen
-
12-12-2019 - |
Frage
Ich habe einige benutzerdefinierte Typen erstellt, zum Beispiel:
public class Temperature
{
protected double _celcius;
public Temperature(){}
public Temperature(double celcius)
{
_celcius = celcius;
}
public double Celcius
{
//sets & returns temperature in Celcius
}
public double Fahrenheit
{
//sets & returns temperature in Fahrenheit
}
}
und ein ähnliches für Mass
, usw.
Ich habe zum Beispiel auch ein benutzerdefiniertes Objekt Planet
, das diese benutzerdefinierten Typen als Eigenschaften verwendet.
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
Was ist die beste Vorgehensweise für die Serialisierung? Planet
in diesem Fall unter Berücksichtigung dessen Mass
Und Temperature
kann sich in Zukunft geringfügig ändern (z. B.hinzufügen Kelvin
Zu Temperature
)?Sollte ich haben Mass
Und Temperature
Erben von einer benutzerdefinierten Schnittstelle von so etwas wie IQuantity
.
Lösung
Bitte sehen Sie sich @Adriano an Kommentar.Das ist es, was ich brauchte.
Ja, Sie können so viele öffentliche Eigenschaften hinzufügen, wie Sie benötigen.Schauen Sie sich zum Vergleich diesen Beitrag hier auf SO an: Was sind die Unterschiede zwischen XmlSerializer und BinaryFormatter?
Andere Tipps
Die binäre Serialisierung ist sehr wählerisch, was das Hinzufügen und Entfernen von Eigenschaften zu Typen angeht.Wenn Sie einen versiontoleranten Serialisierer (z. B. XML-basierte Serialisierer) verwenden, können Sie zuverlässig zwischen Klassenversionen serialisieren/deserialisieren.
Vielleicht möchten Sie die Verwendung in Betracht ziehen protobuf.Net für Ihre Serialisierung - es ist ausgereift, sehr, sehr schnell und versiontolerant.