我有 WCF 服务。它绑定到一个 MSMQ,但这不是这里的问题。我可以序列化一个对象,该对象具有基类和在基类中实现的接口,具体类派生自基类 - 这很好用。
但是,当我在基类中有一个枚举并设置了该值,然后在它被反序列化/从 MSMQ 读取之后,该值仍设置为默认值(即不是在代码中手动设置的值)
有什么想法吗?我什至将枚举标记为 DataContract,并且每个 Enum 成员都具有 EnumMember 属性。
如何序列化枚举?
试试这个。
[Serializable]
public enum EnumToSerialize
{
[XmlEnum("1")]
One = 1,
[XmlEnum("2")]
Two = 2
}
该财产受到保护。将其设置为 Public 和 viola - 序列化 enum 属性。有点糟糕,因为该物业位于低音类中……而是受到保护
试试MSDN上的这篇文章。这个例子似乎能够设置一个带有枚举的属性并将其序列化。在反序列化对象时,您应该能够取回相同的值。
我使用它,它适用于公共枚举:
[Serializable]
public enum EnumToSerialize
{
[EnumMember]
One = 1,
[EnumMember]
Two = 2
}