关于c#:是否可以使用循环引用执行序列化?

Is It possible to perform serialization with circular references?

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

由于循环引用,此父属性导致对象序列化出现问题。

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

对此有什么想法吗?


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

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


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