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 :
Puis je déclare une liste de produits :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public class Donnees : IEnumerable<CLS>
Puis dans ma classe Donnees je déclare ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part private static List<Produit> _produit = new List<Produit>();
Dans mon winforms, je code comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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... ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Merci pour l'aide apporté!
Partager