0

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 クラスのインスタンスを作成するという問題があります。これで、子を設定する親が設定されます...おそらく問題がわかるでしょう。これにより、無限ループが発生します。

これを解決する方法がよくわかりません。アドバイスをいただければ幸いです。ありがとう

4

1 に答える 1

0

すべてのノードを格納するノードのリストを作成できます。

最初にリレーション参照なしですべてのノードを作成し、リストに入力します。その後、すべてのノードに対して populate children/parent メソッドを呼び出します。このメソッドでは、ノードで参照するために必要なノードを探します。

リストは検索にも役立ちます。

于 2012-07-31T21:04:08.917 に答える