【问题标题】: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;
}