Is it possible that DataContractSerializer
wrongly deserializes an object if the fields are not in the "correct" (whatever that means) order?
The classes that I try to serialize/deserialize do not have order-attributes placed on fields/properties. Yet one of my fields always gets deserialized as null
even though it has a non-null value (it actually contains a list of strings).
When I moved two XML elements in serialized file around to match the order in another XML example (for which deserialization worked without problems) everything started to work.
This makes no sense to me but maybe someone knows better. ;)
To be eligible for correct serialization / serialization by the DataContractSerializer
, all of the following must be true.
SerializableAttribute
or DataContractAttribute
set;DataMemberAttribute
set;IExtensibleDataObject
;Order
-property of the DataMemberAttribute
.So, the order of the declaration does matter. If members are not in alphabetical order, they are skipped. Look up this answer at StackOverflow for an example, perhaps it applies to your case.