使用XmlSerialize序列化多个引用对象

时间:2015-06-09 13:13:17

标签: c# xml xml-serialization

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

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

public class A{
  int id;
}

public class B{
  int id;
  A a;
}

public class Root{
  B[] bArray;
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

不应该对这些类进行循环。

    [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;
    }
​