Je trouve difficile de trouver un exemple décent sur la façon d'implémenter une classe de hiérarchie parent-enfant. J'ai un contrôle treeView que je veux convertir en une hiérarchie de classes, en ajoutant des données supplémentaires à chaque nœud et être capable d'itérer facilement sur les nœuds de chaque parent en utilisant IEnumerable.Implémenter une hiérarchie de classe parent-enfant
public IEnumerable<Node> GetAllChildsFromParent(Node parent)
{
foreach (Node node in parent.NodeChildsCollection)
{
yield return node;
}
}
Je l'ai déjà mis en œuvre le morceau de code suivant, mais est resté coincé et ne vraiment pas la moindre idée si je suis sur la bonne voie ou non? Comment devrais-je procéder pour compléter ceci?
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);
}
}