2012-10-24 2 views
0

Я создаю класс, который будет содержать список дочерних экземпляров, которые мне нужно запомнить их родительский объект.Каким образом можно связать все дочерние объекты с текущим?

class Node 
{ 
    List<Node> childNodes; 
    Node ParentNode; 
    public Node(List<Node> nodes) 
    { 
     childNodes = nodes; 
     foreach (var node in childNodes) 
     { 
      node.ParentNode = this; 
     } 
    } 
} 

Это хороший способ или я что-то упускаю?

+1

Выглядит вполне разумно для меня. Я бы изменил ваши поля как свойства, но кроме того, ваша структура звучит. –

ответ

0
I'm assuming this isn't a chicken egg problem. The Parent would be created first and therefore children would be added later. 

public class Node 
{ 
    public List<Node> ChildNodes {get; private set;} 
    public Node ParentNode {get; private set;} 

    public Node():this(null) 
    { 
    } 

    public Node(Node parentNode) 
    { 
     ParentNode = parentNode; 
     ChildNodes = new List<Node>(); 
    } 

    public void AddChildNode(Node childNode){ 
     childNode.ParentNode = this; 
     ChildNodes.Add(childNode); 
    } 

} 
Смежные вопросы