导致无限循环的父/子关系

时间:2012-07-31 20:53:30

标签: c# recursion parent-child

我正在尝试将System.Web.SiteMapNode转换为我自己的SiteMapNode类(见下文):

public class SiteMapNode {
    public virtual SiteMapNode Parent { get; set; }
    public virtual string Title { get; set; }
    public virtual IList<SiteMapNode> Children { get; set; }

    public SiteMapNode(System.Web.SiteMapNode node) {
        Parent = node.ParentNode != null ? new SiteMapNode(node.ParentNode) : null;
        Title = node.Title;
        Children = node.ChildNodes.Cast<System.Web.SiteMapNode>().Select(n => new SiteMapNode(n)).ToList();
    }
}

现在我希望我能说:

var node = new MyApp.SiteMapNode(System.Web.CurrentNode);

现在的麻烦是构造函数设置Children,然后为每个子节点创建一个SiteMapNode类的实例。现在,这将设置设置子项的父项...您现在可能会看到问题,这会导致无限循环。

我不太明白如何解决这个问题。我很感激任何建议。感谢

1 个答案:

答案 0 :(得分:0)

您可以列出要存储所有节点的节点列表。

首先,您创建没有关系引用的所有节点并填充列表,然后,为每个节点调用populate children / parent方法,在该节点中,您将查找所需节点以在节点中引用它。

该列表对搜索目的也很有用。