C# 自定义类型对象的序列化实践
-
12-12-2019 - |
题
我创建了一些自定义类型,例如:
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
}
}
和类似的一个 Mass
, , ETC。
我还有一个自定义对象,例如 Planet
, ,它使用这些自定义类型作为属性。
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
序列化的最佳实践是什么 Planet
在这种情况下考虑到 Mass
和 Temperature
将来可能会略有变化(例如添加 Kelvin
到 Temperature
)?我应该有 Mass
和 Temperature
从类似的自定义接口继承 IQuantity
.
解决方案
请参阅@Adriano 的 评论. 。这就是我所需要的。
是的,您可以根据需要添加任意数量的公共属性。为了进行比较,请查看此处的这篇文章: XmlSerializer 和 BinaryFormatter 之间有什么区别
其他提示
二进制序列化对于向类型添加和删除属性非常挑剔。如果您使用版本容忍序列化程序(例如基于 xml 的序列化程序),您将能够在类版本之间可靠地序列化/反序列化。
您可能需要考虑使用 protobuf.Net 对于您的序列化 - 它是成熟的,非常非常快并且版本宽容。
不隶属于 StackOverflow