具有自定义类型的对象的 C# 序列化做法
本文关键字:序列化 对象 自定义 类型 | 更新日期: 2023-09-27 18:35:00
>我创建了一些自定义类型,例如:
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
等。
我还有一个自定义对象,例如 Planet
,它使用这些自定义类型作为属性。
[Serializable]
public class Planet
{
public int PositionFromSun;
public Mass Mass;
public Temperature Temperature;
}
考虑到Mass
和Temperature
将来可能会略有变化(例如,将Kelvin
添加到Temperature
(,在这种情况下序列化Planet
的最佳实践是什么?我应该Mass
并从类似 IQuantity
的自定义界面继承Temperature
.
请参阅@Adriano的评论。这就是我需要的。
是的,您可以根据需要添加任意数量的公共属性。为了进行比较,请看SO上的这篇文章:XmlSerializer和BinaryFormatter之间有什么区别。
二进制序列化对向类型添加和删除属性非常挑剔。如果您使用版本容忍序列化程序(例如基于 xml 的序列化程序(,您将能够在类的版本之间可靠地序列化/反序列化。
您可能需要考虑使用 protobuf.Net 进行序列化 - 它是成熟的、非常非常快的和版本容错的。