Reputation: 5822
I have a WCF service. it is bound to an MSMQ but that is not the issue here. I can serialize an object which has a base class and an interface implemented in the base class and the concrete class derives from the base class - this works fine.
however, when I have an enum in the base class and I set that value, then after it being deserialized/read from the MSMQ, that value is still set to the default value (i.e not the one set manually in code)
any ideas whats going on? I even marked the enum as a DataContract and also each of the Enum members with an EnumMember attribute.
how can I serialize enums?
Upvotes: 12
Views: 34306
Reputation: 7383
I use this, which works for a public enum:
[Serializable]
public enum EnumToSerialize
{
[EnumMember]
One = 1,
[EnumMember]
Two = 2
}
Upvotes: 0
Reputation: 5822
The property was protected. set it to Public and viola - serialized the enum property. Kinda bad as the property resides in a bass class....rather have it protected
Upvotes: 4
Reputation: 855
Try this article on MSDN. This example seems to be able to set a property with an enumeration and serialize it. You should be able to get that same value back when de-serializing the object.
Upvotes: 1
Reputation: 3794
Try this.
[Serializable]
public enum EnumToSerialize
{
[XmlEnum("1")]
One = 1,
[XmlEnum("2")]
Two = 2
}
Upvotes: 4