Enum не сериализует

У меня есть служба WCF. он связан с MSMQ, но это не проблема. Я могу сериализовать объект, который имеет базовый класс и интерфейс, реализованный в базовом классе, и конкретный класс выводится из базового класса - это отлично работает.

однако, когда у меня есть перечисление в базовом классе, и я устанавливаю это значение, то после его десериализации/чтения из MSMQ это значение по-прежнему устанавливается на значение по умолчанию (т.е. не такое, которое задано вручную в коде)

любые идеи, что происходит? Я даже обозначил перечисление как DataContract, а также каждый из членов Enum с атрибутом EnumMember.

как я могу сериализовать перечисления?

Ответ 1

Свойство было защищено. установите его в Public и viola - сериализуйте свойство enum. Kinda плохо, поскольку свойство находится в басовом классе... скорее, он защищен

Ответ 2

Попробуйте это.

[Serializable]
public enum EnumToSerialize
{
    [XmlEnum("1")]
    One = 1,
    [XmlEnum("2")]
    Two = 2
}

Ответ 3

Попробуйте эту статью на MSDN. Этот пример, похоже, способен установить свойство с перечислением и сериализовать его. Вы должны иметь возможность вернуть это же значение при де-сериализации объекта.

Ответ 4

Я использую это, которое работает для публичного перечисления:

[Serializable]
public enum EnumToSerialize
{
    [EnumMember]
    One = 1,
    [EnumMember]
    Two = 2
}