2016-04-26 10 views
3

Ich versuche, TreeNodes zu verwenden, um eine Tree-ähnliche Struktur in Code zu erstellen. Ich bin überhaupt nicht mit TreeNodes vertraut. Ich habe vorher etwas gesucht, aber ich habe immer noch nicht das Gefühl, dass ich genau verstehe, was ich mache.TreeNode Creation Errors

Ich erstelle ein Spiel in Unity mit C#. Ich verwende XML, um einen Dialog zu erstellen, und ich möchte die verschiedenen Optionen aus den verschiedenen Auswahlmöglichkeiten in einer baumähnlichen Struktur speichern.

Eine visuelle Darstellung davon wäre, wie:

------------------------------- Wahl einer --------------------------- Wahl b --------------------- -----------

   /--------|--------\   /--------|--------\ 

      choice d choice e choice f choice g choice h choice i 

und so weiter.

public class TreeNode<T> : IEnumerable<TreeNode<T>> 
{ 
    public T Data {get; set;} 
    public TreeNode<T> Parent { get; set; } 
    public ICollection<TreeNode<T>> Children {get; set;} 

    public TreeNode(T data) { 
     this.Data = data; 
     this.Children = new LinkedList<TreeNode<T>>(); 
    } 

    public TreeNode<T> AddChild(T child) { 
     TreeNode<T> childNode = new TreeNode<T>(child) {Parent = this}; 
     this.Children.Add (childNode); 
     return childNode; 
    } 
} 

Derzeit erhalte ich den Fehler TreeNode<T>' does not implement interface member System.Collections.Generic.IEnumerable> .GetEnumerator()‘.

Ich bin nicht ganz sicher, was dieser Fehler sogar bedeutet, jede Hilfe wäre willkommen.

Mein erstes Mal eine Frage in StackOverFlow posieren, also wenn dies an der falschen Stelle ist, lass es mich wissen.

Dank

+0

Konnten Sie Ihre lösen Problem? – gnalck

+0

Ja! Danke für die Hilfe. – Carbonroast

Antwort

0

Das Problem ist in der Zeile, wo Sie erklären, dass TreeNode<T> (wird) IEnumerable<TreeNode<T>> implementieren. Um diese Schnittstelle richtig zu implementieren, muss die Klasse eine Implementierung aller Methoden enthalten, die die Schnittstelle bereitstellt.

public class TreeNode<T> : IEnumerable<TreeNode<T>> 

Entfernen Sie : IEnumerable<TreeNode<T>> und es wird korrekt kompilieren. Wenn Sie diese Schnittstelle natürlich nicht implementieren möchten, müssen Sie Implementierungen aller IEnumerable-Methoden hinzufügen.

0

Sie können entweder versuchen, die geerbten : IEnumerable<TreeNode<T>> zu entfernen, oder Sie müssten die System.Collections.IEnumerable.GetEnumerator() Methode implementieren.

Siehe this Thread für einige zusätzliche Lesung auf den Fehler, und möglicherweise einige weitere Verständnis.

Zitat „Du hast nicht implementieren System.Collections.IEnumerable.GetEnumerator. Wenn Sie die generische IEnumerable implementieren Sie müssen auch System.Collections.IEnumerable der GetEnumerator implementieren.