Serialize/deserialize objects - order of fields matters?

后端 未结 1 1558
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-17 00:03

Is it possible that DataContractSerializer wrongly deserializes an object if the fields are not in the \"correct\" (whatever that means) order?

The cla

相关标签:
1条回答
  • 2020-12-17 00:54

    To be eligible for correct serialization / serialization by the DataContractSerializer, all of the following must be true.

    1. The class that must be serialized must have SerializableAttribute or DataContractAttribute set;
    2. The properties and fields of the class that must be serialized require the DataMemberAttribute set;
    3. The datatype of the serializable property or field must be serializable (i.e., have a public ctor and inherit ISerializable);
    4. The class that must be serialized must implement IExtensibleDataObject;
    5. Note: serializable fields can be either public or private.
    6. Members must be in alphabetical order or you should use the 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.

    0 讨论(0)
提交回复
热议问题