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

C# 导致无限循环的父/子关系,c#,recursion,parent-child,C#,Recursion,Parent Child,我正在尝试将System.Web.SiteMapNode转换为我自己的SiteMapNode类(请参见下文): 但现在的问题是,构造函数设置子类,然后为每个子类创建SiteMapNode类的实例。现在这将设置设置子项的父项。。。您现在可能可以看到问题,这会导致无限循环 我不太明白如何解决这个问题。如果有任何建议,我将不胜感激。谢谢您可以创建一个节点列表,用于存储所有节点 首先,创建所有没有关系引用的节点并填充列表,然后,为每个节点调用populatechildren/parent方法,在该方法中

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

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


我不太明白如何解决这个问题。如果有任何建议,我将不胜感激。谢谢

您可以创建一个节点列表,用于存储所有节点

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

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

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);