Ahmed ilyas
Ahmed ilyas

Reputation: 5822

Enum not serializing

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

Answers (4)

cederlof
cederlof

Reputation: 7383

I use this, which works for a public enum:

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

Upvotes: 0

Ahmed ilyas
Ahmed ilyas

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

Emmie Lewis-Briggman
Emmie Lewis-Briggman

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

animaonline
animaonline

Reputation: 3794

Try this.

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

Upvotes: 4

Related Questions