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