Практика сериализации C# объекта с настраиваемыми типами

StackOverflow https://stackoverflow.com//questions/10699245

Вопрос

Например, я создал несколько пользовательских типов:

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;
}

Какова наилучшая практика сериализации Planet в данном случае учитывая, что Mass и Temperature может немного измениться в будущем (например.добавление Kelvin к Temperature)?Должен ли я иметь Mass и Temperature наследование от пользовательского интерфейса чего-то вроде IQuantity.

Это было полезно?

Решение

Пожалуйста, посмотрите @Adriano's комментарий.Это то, что мне нужно.

Да, вы можете добавить столько общедоступных свойств, сколько вам нужно.Для сравнения взгляните на этот пост здесь, на SO: Каковы различия между XmlSerializer и BinaryFormatter?

Другие советы

Двоичная сериализация довольно требовательна к добавлению и удалению свойств типов.Если вы используете сериализатор, устойчивый к версиям (например, сериализаторы на основе XML), вы сможете надежно сериализовать/десериализовать между версиями классов.

Возможно, вы захотите рассмотреть возможность использования protobuf.Net для вашей сериализации - она ​​зрелая, очень быстрая и терпимая к версиям.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top