Enum не сериализовать
У меня есть служба WCF. он привязан к msmq, но это не проблема здесь. Я могу сериализовать объект, который имеет базовый класс и интерфейс, реализованный в базовом классе, а конкретный класс является производным от базового класса - это отлично работает.
однако, когда у меня есть перечисление в базовом классе, и я устанавливаю это значение, то после его десериализации / чтения из MSMQ это значение по-прежнему имеет значение по умолчанию (i.e не тот, который установлен вручную в коде)
любой идеи, что происходит? Я даже отметил перечисление как DataContract, а также каждый из членов перечисления с атрибутом EnumMember.
Как я могу сериализации перечислений?
4 ответов
попробуйте это.
[Serializable]
public enum EnumToSerialize
{
[XmlEnum("1")]
One = 1,
[XmlEnum("2")]
Two = 2
}
собственность была защищена. установите его в Public и viola-сериализовал свойство enum. Немного плохо, поскольку свойство находится в классе bass....лучше бы он был защищен!--1-->
попробуйте эту статью о MSDN. В этом примере, похоже, можно задать свойство с перечислением и сериализовать его. Вы должны иметь возможность получить то же самое значение при де-сериализации объекта.
Я использую это, что работает для публичного перечисления:
[Serializable]
public enum EnumToSerialize
{
[EnumMember]
One = 1,
[EnumMember]
Two = 2
}