枚举不是序列化

时间:2012-05-14 19:03:45

标签: c# wcf msmq

我有一个WCF服务。 它与MSMQ绑定,但这不是问题。 我可以序列化一个对象,它有一个基类和一个在基类中实现的接口,具体类派生自基类 - 这很好。

但是,当我在基类中有一个枚举并且我设置了该值时,在从MSMQ反序列化/读取之后,该值仍然设置为默认值(即不是在代码中手动设置的值)

有什么想法吗?我甚至将枚举标记为DataContract以及每个具有EnumMember属性的Enum成员。

如何序列化枚举?

4 个答案:

答案 0 :(得分:3)

试试这个。

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

答案 1 :(得分:2)

该物业受到保护。将它设置为Public和viola - 序列化enum属性。有点不好,因为该物业属于低音类......而是保护它

答案 2 :(得分:1)

MSDN上试试这篇文章。此示例似乎能够使用枚举设置属性并将其序列化。在反序列化对象时,您应该能够获得相同的值。

答案 3 :(得分:0)

我使用它,适用于公共枚举:

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