DataContractSerializer
是否会错误地反序列化对象,如果字段不按“正确”(无论是什么意思)顺序排列?
我尝试序列化/反序列化的类没有在字段/属性上放置顺序属性。然而,我的一个字段总是被反序列化为null
,即使它有一个非空值(实际上包含一个字符串列表)。
当我移动序列化文件中的两个XML元素以匹配另一个XML示例中的顺序时(该示例的反序列化没有问题),一切都开始正常工作。
这对我来说毫无意义,但也许有人知道得更好。;)
DataContractSerializer
是否会错误地反序列化对象,如果字段不按“正确”(无论是什么意思)顺序排列?
我尝试序列化/反序列化的类没有在字段/属性上放置顺序属性。然而,我的一个字段总是被反序列化为null
,即使它有一个非空值(实际上包含一个字符串列表)。
当我移动序列化文件中的两个XML元素以匹配另一个XML示例中的顺序时(该示例的反序列化没有问题),一切都开始正常工作。
这对我来说毫无意义,但也许有人知道得更好。;)
要使类能够被 DataContractSerializer
正确序列化/反序列化,必须满足以下条件:
SerializableAttribute
或 DataContractAttribute
;DataMemberAttribute
;IExtensibleDataObject
接口;DataMemberAttribute
的 Order
属性。因此,声明的顺序确实很重要。如果成员没有按字母顺序排列,则会被跳过。查看 StackOverflow 上的此答案,也许适用于您的情况。
DataMemberAttribute
。你有参考链接吗?我很想了解更多(然后更新我的答案)。 - Abel