Bonjour,
Je suis nouvelle en programmation C#. Je suis actuellement en train de suivre une formation de C# 2.0 sur la plate forme VS2005. J'ai deux sessions de suivie et il m'en reste une.
Lors de la dernière session nous avons appris les itérateurs. Arrivé au boulot j'essaie de mettre en pratique ce concept mais je n'y arrive pas parce que je ne comprend pas toutes ces histoires de IEnumerable et GetEnumerator etc.
Alors voilà, je vous place en contexte.
J'ai une classe qui s'appelle Produit
J'ai une classe qui s'appelle Donnéesqui elle s'occupe d'instancier la classe produit, de lire la database et de remplir une liste de produit.
Puis, dans mon WinForms, j'instancie une variable de Données.
Ce que j'ai besoin de faire, c'est de lire les produits qui répondent à un certain critère - disons dans notre cas, qu'il soit actif. Donc, j'ai besoin de Produit.Actif = True.
J'ai vu dans ma formation que lorsque les itérateurs sont bien implémentés, on peut faire un foreach sur notre objet afin de rechercher les instances qui répondent à notre critère.
Alors voilà ce que j'ai fait jusqu'à date :
Déclaration de ma classe Données :
public class Donnees : IEnumerable<CLS>
Puis je déclare une liste de produits :
private static List<Produit> _produit = new List<Produit>();
Puis dans ma classe Donnees je déclare ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public IEnumerator<CLS> GetEnumerator()
{
return _produit.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public IEnumerable<Produit> ProduitActif()
{
foreach (Produit p in _produit)
if (p.Actif == true)
yield return p;
} |
Dans mon winforms, je code comme cela :
1 2 3 4 5 6
| Donnees _donnees = new Donnees()
foreach (Donnees i in _donnees)
{
//Ajout des données dans le combobox
cbProduit.Items.Add(i.ClientCLS[?].Code);
} |
Je ne comprend pas comment faire l'appel correctement dans mon winforms. Je dois passer un indice, alors qu'avec mon foreach je n'ai pas cet indice... ???
Merci pour l'aide apporté!
Partager