C# Sérialisation des pratiques d'objet avec des types personnalisés
-
12-12-2019 - |
Question
J'ai créé quelques types personnalisés, par exemple:
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
}
}
et une autre semblable pour Mass
, etc.
J'ai aussi un objet personnalisé, par exemple Planet
, qui utilise ces types personnalisés, comme des propriétés.
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
Quelle est la meilleure pratique pour la sérialisation Planet
dans ce cas, considérant que Mass
et Temperature
peut varier légèrement dans le futur (par ex.l'ajout d' Kelvin
pour Temperature
)?Dois-je avoir Mass
et Temperature
héritage d'une interface personnalisée de quelque chose comme IQuantity
.
La solution
Veuillez voir @Adriano commentaire.C'est ce dont j'avais besoin.
Oui, vous pouvez ajouter autant de propriétés publiques que vous avez besoin.Pour la comparaison de prendre un coup d'oeil à ce post ici DONC: Quelles sont les différences entre le XmlSerializer et BinaryFormatter
Autres conseils
La sérialisation binaire est assez pointilleux sur les propriétés d'être ajoutés et supprimés de types.Si vous utilisez une version tolérante sérialiseur (par exemple à base de xml serialisers), vous serez en mesure fiable de sérialiser / deserialise entre les versions de classes.
Vous pouvez envisager d'utiliser protobuf.Net pour votre sérialisation - il est mature, très très rapide et la version tolérante.