我创建了一些自定义类型,例如:

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 在这种情况下考虑到 MassTemperature 将来可能会略有变化(例如添加 KelvinTemperature)?我应该有 MassTemperature 从类似的自定义接口继承 IQuantity.

有帮助吗?

解决方案

请参阅@Adriano 的 评论. 。这就是我所需要的。

是的,您可以根据需要添加任意数量的公共属性。为了进行比较,请查看此处的这篇文章: XmlSerializer 和 BinaryFormatter 之间有什么区别

其他提示

二进制序列化对于向类型添加和删除属性非常挑剔。如果您使用版本容忍序列化程序(例如基于 xml 的序列化程序),您将能够在类版本之间可靠地序列化/反序列化。

您可能需要考虑使用 protobuf.Net 对于您的序列化 - 它是成熟的,非常非常快并且版本宽容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top