【发布时间】:2012-05-22 09:24:43
【问题描述】:
我创建了一些自定义类型,例如:
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 和Temperature 继承自IQuantity 之类的自定义接口。
【问题讨论】:
-
如果您使用 BinaryFormatter 进行序列化,则不必关心公共属性,它只会序列化字段(在您的情况下为 _celcius)。此外,如果您想保存数据以使用默认格式化程序不是一个好主意,因为它的“专有”格式和处理版本的方式。
-
所以你是说只要我把
_celcius保留在那里,我对周围的代码做什么都没关系?能否请您扩展一下您的第二句话? -
是的,您可以根据需要添加任意数量的公共属性。为了比较,请在 SO 上查看这篇文章:stackoverflow.com/questions/1154198/…
标签: c# .net-3.5 binary-serialization