[c#] IEnumerable - IEnumerator
Salut à tous,
Je coince sur un petit problème sur les interfaces IEnumerable<T> et IEnumerator<T>. J'ai lu quelques articles dessus, je sais le faire sans souci en Java, et là, ça veut pas se compiler :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
public class Rubrique : IEnumerable<Rubrique>
{
public IEnumerator<Rubrique> GetEnumerator()
{
Iterateur it = new Iterateur(this);
foreach (Rubrique r in Iterateur)
{
yield return r;
}
}
public List<Rubrique> _myRubriquesEnfants = new List<Rubrique>();
}
public class Iterateur : IEnumerator<Rubrique>
{
private List<Rubrique> listAllRubrique = new List<Rubrique>();
int index = 0;
public Iterateur(Rubrique Rubrique)
{
remplir(Rubrique);
}
public Rubrique Current
{
get { return listAllRubrique[index]; }
}
public bool MoveNext()
{
if (index < listAllRubrique.Count)
{
index++;
return true;
}
else
{
return false;
}
}
public void Reset()
{
index = 0;
}
private void remplir(Rubrique Rubrique)
{
listAllRubrique.Add(Rubrique);
foreach (Rubrique rubrique in Rubrique._myRubriquesEnfants)
{
remplir(rubrique);
}
}
public void Dispose()
{
}
} |
Message d'erreur pour la classe Rubrique:
Citation:
'CoreNet.BusinessLogicLayer.Rubrique' n'implémente pas le membre d'interface 'System.Collections.IEnumerable.GetEnumerator()'. 'CoreNet.BusinessLogicLayer.Rubrique.GetEnumerator()' est soit static, non public, soit il ne possède pas le type de retour correct
Message d'erreur pour la classe Iterateur:
Citation:
'CoreNet.BusinessLogicLayer.Iterateur' n'implémente pas le membre d'interface 'System.Collections.IEnumerator.Current'. 'CoreNet.BusinessLogicLayer.Iterateur.Current' est soit static, non public, soit il ne possède pas le type de retour correct.
Quelqu'un à des idées ? ça doit être un truc tout bête mais je pige pas :|