Как я могу иметь сериализуемую структуру, которая неявно упаковывает себя как int32? в C #? - PullRequest
0 голосов
/ 11 июня 2010

Короче говоря, у меня есть структура (см. Ниже), которая содержит ровно одно поле:

private int value;

Я также реализовал операторы неявного преобразования:

    public static implicit operator int(Outlet val)
    {
        return val.value;
    }

    public static implicit operator Outlet(int val)
    {
        return new Outlet(val);
    }

Я реализовал все следующее:

IComparable, IComparable<Cart>, IComparable<int>, IConvertible, IEquatable<Cart>, IEquatable<int>, IFormattable

Я нахожусь в точке, где у меня действительно нет понятия, почему, но всякий раз, когда я сериализую этот объект, я не получаю значения.Например, с XmlSerialization:

<Outlet />

Кроме того, я не только обеспокоен XmlSerialization, я обеспокоен ВСЕЙ сериализацией (например, двоичным). Как я могу гарантировать, что это сериализуется правильно?

ПРИМЕЧАНИЕ: я сделал это, потому что отображение словаря int, int мне показалось довольно плохо напечатанным, когда требовались явные объекты с проверочным поведением.

1 Ответ

1 голос
/ 11 июня 2010

XML-сериализация работает только с общедоступными свойствами , поэтому вам необходимо предоставить открытое свойство, которое устанавливает / получает значение.

В качестве альтернативы вы можете реализовать IXmlSerializable чтобы вручную сериализовать структуру.

Это только проблема с сериализацией XML.Бинарный сериализатор будет сериализовать как частные поля, так и открытые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...