在c#中序列化树对象

时间:2012-06-19 13:07:55

标签: c# xml-serialization binary-tree circular-reference

我有一个简单的树结构,其中包含以下内容

public class MyTree {
 public MyTree Parent { get; set;}
 public List<MyTree> Children {get; set;}
[...]
}

目前课程要复杂得多,但这是我认为的问题的重要部分。该代码很老,我不能只改变整个结构,因为它在我必须维护的项目的许多领域中使用。

我的主要问题是我无法序列化该对象。 (我从root对象开始序列化)我收到以下消息:

  

在序列化类型的对象时检测到循环引用   MyTree

似乎很清楚为什么会发生这种情况,因为我将孩子和父母联系在一起。

但我该如何解决这个问题呢?我可以禁用父属性的序列化吗?例如?

1 个答案:

答案 0 :(得分:3)

将父级标记为非序列化项目(XmlIgnoreSoapIgnoreNonSerialized)。检查不同的there

在您尝试添加子项之后,在您的情况下将父项添加到xml。每个子节点都有父节点和序列化器的链接尝试再次序列化父节点等等。