Prácticas de serialización de C# de objetos con tipos personalizados
-
12-12-2019 - |
Pregunta
He creado algunos tipos personalizados, por ejemplo:
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
}
}
y uno similar para Mass
, etc.
También tengo un objeto personalizado, por ejemplo. Planet
, que utiliza estos tipos personalizados como propiedades.
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
¿Cuál es la mejor práctica para serializar? Planet
en este caso considerando que Mass
y Temperature
puede cambiar ligeramente en el futuro (p. ej.añadiendo Kelvin
a Temperature
)?¿Debería haberlo hecho? Mass
y Temperature
heredando de una interfaz personalizada de algo como IQuantity
.
Solución
Por favor vea @Adriano comentario.Esto es lo que necesitaba.
Sí, puedes agregar tantas propiedades públicas como necesites.Para comparar, eche un vistazo a esta publicación aquí en SO: ¿Cuáles son las diferencias entre XmlSerializer y BinaryFormatter?
Otros consejos
La serialización binaria es bastante exigente a la hora de agregar y eliminar propiedades a los tipos.Si utiliza un serializador tolerante a la versión (por ejemplo, serializadores basados en xml), podrá serializar/deserializar de manera confiable entre versiones de clases.
Es posible que desee considerar el uso protobuf.Net para su serialización: es maduro, muy, muy rápido y tolerante a las versiones.