C # Pratiche di serializzazione dell'oggetto con tipi personalizzati
-
12-12-2019 - |
Domanda
Ho creato alcuni tipi personalizzati per esempio:
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
}
}
.
e uno simile per Mass
, ecc.
Ho anche un oggetto personalizzato, ad esempio Planet
, che utilizza questi tipi personalizzati come proprietà.
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
.
Qual è la migliore pratica per il serializzazione Planet
in questo caso considerando che Mass
e Temperature
possono cambiare leggermente in futuro (ad esempio aggiungere Kelvin
a Temperature
)?Devo avere Mass
e Temperature
che eredita da un'interfaccia personalizzata di qualcosa come IQuantity
.
Soluzione
Si prega di vedere @ Adriano Commento .Questo è quello di cui avevo bisogno.
.Sì, puoi aggiungere tante proprietà pubbliche di cui hai bisogno.Per il confronto Dai un'occhiata a questo post qui su così: Cosa sonoLe differenze tra XMLSerializzatore e BinaryFormatter
Altri suggerimenti
La serializzazione binaria è piuttosto schizzinosa sulle proprietà aggiunte e rimosse ai tipi.Se si utilizza una versione TOLERANT SERIALIZER (ad es. SeriaLers basati su XML) sarai in grado di serializzare / deserializzarsi in modo affidabile tra le versioni delle classi.
Potrebbe voler considerare di utilizzare protobuf.net per la tua serializzazione - èmaturo, molto veloce e tollerante alla versione.