Ich finde es schwierig, ein anständiges Beispiel zu finden, wie eine Eltern-Kind-Hierarchie-Klasse implementiert werden kann. Ich habe ein TreeView-Steuerelement, das ich in eine Klassenhierarchie konvertieren möchte, indem ich jedem Knoten zusätzliche Daten hinzufüge und in der Lage bin, mit IEnumerable problemlos über die Knoten jedes Elternteils zu iterieren.Implementieren Sie eine Eltern-Kind-Klassenhierarchie
public IEnumerable<Node> GetAllChildsFromParent(Node parent)
{
foreach (Node node in parent.NodeChildsCollection)
{
yield return node;
}
}
Ich habe bereits das folgende Stück Code implementiert, jedoch blieb stecken und nicht wirklich eine Ahnung, ob ich auf dem richtigen Weg bin oder nicht? Wie soll ich fortfahren, um das zu vervollständigen?
public class NodeChildsCollection : IEnumerable<Node>
{
IList<Node> nodeCollection = new List<Node>();
Node parent;
public Node Parent
{
get { return parent; }
set { parent = value; }
}
public NodeChildsCollection()
{
}
public void AddNode(Node parent, Node child)
{
this.parent = parent;
nodeCollection.Add(child);
}
#region IEnumerable<Node> Members
public IEnumerator<Node> GetEnumerator()
{
foreach (Node node in nodeCollection)
{
yield return node;
}
}
#endregion
#region IEnumerable Members
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
#endregion
}
public class Node
{
NodeChildsCollection nodeChildsCollection = new NodeChildsCollection();
public Node Parent
{
get { return nodeChildsCollection.Parent; }
set { nodeChildsCollection.Parent = value; }
}
public void AddChild(Node child)
{
nodeChildsCollection.AddNode(this, child);
}
}