如果字段不在“正确”(无论是什么意思)顺序中,DataContractSerializer
是否可能错误地反序列化对象?
我尝试序列化/反序列化的类没有在字段/属性上放置顺序属性。然而,我的一个字段总是被反序列化为null
,即使它具有非空值(它实际上包含字符串列表)。
当我在序列化文件中移动两个XML元素以匹配另一个XML示例中的顺序时(反序列化工作没有问题)一切都开始工作。
这对我没有意义,但也许有人知道的更好。 ;)
答案 0 :(得分:14)
要获得DataContractSerializer
的正确序列化/序列化资格,以下所有条件必须为真。
SerializableAttribute
或DataContractAttribute
; DataMemberAttribute
set; IExtensibleDataObject
; DataMemberAttribute
的{{3}}。 因此,声明的顺序很重要。如果成员不按字母顺序排列,则会跳过它们。查看Order
-property,也许它适用于您的情况。