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

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

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

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

有什么想法吗?

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

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

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