【问题标题】:serialize multiple reference objects with XmlSerialize使用 XmlSerialize 序列化多个引用对象
【发布时间】:2015-06-09 21:44:49
【问题描述】:

使用带有交叉引用的 XmlSerialize 类进行序列化的最佳方法是什么?

在下面的示例中,多个 B 类可以指向同一个 A 对象。如何在 xml 中不写多个 A 的情况下序列化 C?我的类很大,所以我更喜欢使用自动序列化而不是编写完整的

public class A{
  int id;
}

public class B{
  int id;
  A a;
}

public class Root{
  B[] bArray;
}

【问题讨论】:

    标签: c# xml xml-serialization


    【解决方案1】:

    XmlSerializer 无法处理交叉引用。尝试使用 PreserveObjectReferences = true 的 DataContractSerializer。

    【讨论】:

      【解决方案2】:

      类循环应该没有任何区别。

          [XmlRoot("A")]
          public class A
          {
              [XmlElement("id")]
              int id;
          }
          [XmlRoot("B")]
          public class B
          {
              [XmlElement("id")]
              int id;
              [XmlElement("A")]
              A a;
          }
          [XmlRoot("Root")]
          public class Root
          {
              [XmlElement("B")]
              List<B> bArray;
          }
      ​
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-30
        • 2015-08-30
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多