是否可以使用循环引用执行序列化?

时间:2011-02-15 13:44:06

标签: c# serialization circular-reference

因此,我的实体类(用C#编写)遵循父子模型,其中每个子对象必须具有Parent属性,在该属性中它保持对其Parent的引用。

由于循环引用,此Parent属性导致Object序列化的问题。

我无法删除对父级的引用,也不能将其标记为XmlIgnore(因为我需要在反序列化XML时将其读回)

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:11)

您可以创建自己的XMLSerializer,也可以使用DataContractSerializer[DataContract( IsReference = true)]属性告诉序列化程序记住引用。< / p>

答案 1 :(得分:11)

XML序列化不支持循环引用,您需要使用XmlIgnore属性从序列化中排除父属性。有关在反序列化时维护关系的方法,请参阅this blog post

或者,您可以使用DataContractSerializer代替XmlSerializer。它支持循环引用,但不能提供对XML模式的很多控制......