代码之家  ›  专栏  ›  技术社区  ›  mare

序列化/反序列化对象-字段顺序重要吗?

  •  5
  • mare  · 技术社区  · 14 年前

    有没有可能 DataContractSerializer 如果字段的顺序不正确(不管这意味着什么),会错误地反序列化对象吗?

    null 即使它有一个非空值(它实际上包含一个字符串列表)。

    当我移动序列化文件中的两个XML元素以匹配另一个XML示例中的顺序(反序列化工作没有问题)时,一切都开始工作了。

    这对我来说毫无意义,但也许有人知道得更清楚

    1 回复  |  直到 13 年前
        1
  •  16
  •   Community CDub    7 年前

    DataContractSerializer ,以下所有内容都必须为真。

    1. 必须序列化的类必须具有 SerializableAttribute DataContractAttribute 套;
    2. 必须序列化的类的属性和字段需要 DataMemberAttribute 套;
    3. 必须序列化的类必须实现 IExtensibleDataObject ;
    4. 注意:可序列化的字段可以是公共的,也可以是私有的。
    5. Members must be in alphabetical order 或者你应该用 Order -property 数据成员属性 .

    所以,声明的顺序 this answer at StackOverflow for an example ,也许这适用于你的情况。