IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]Classe, comment accéder au conteneur


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 75
    Points
    75
    Par défaut [C#]Classe, comment accéder au conteneur
    Bonjour et merci à ceux qui pourront m'aider !
    Je suis confronté à ce problème lorsque j'essaye d'écrire des classes.
    je suppose que c'est tout bête.

    Admettons que j'ai deux classes publiques distinctes.
    La 1ère classe "Tache" s'ajoute à une collection gérée par ma 2ème classe "TacheCollection"

    Voici ce que je ne sais pas remplir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Tache 
    {
         #region Accesseurs
         public Taches MaCollection
         {
                get { return ???????????;}
         }
         #endregion
    }
    Que mettre dans ce get {} pour accéder à la collection qui contient "Tache" ????


    P.S] Si besoin ait, voici le code de "TacheCollection":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class TachesCollection : CollectionBase
    {
            public TachesCollection() { }
            public Tache this[int index]
            {
                get  {   return ((Tache)List[index]);    }
            }
            public int Add(Tache pTache)
            {
                return (List.Add(pTache));
            }
    }

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Points : 443
    Points
    443
    Par défaut
    Bonjour,

    Je te conseille de définir ta classe tache 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 class Tache
    {
        private TachesCollection _liste;
     
        public Tache(TachesCollection pCollection)
        {
            _liste = pCollection;
        }
     
        #region Accesseurs
        public TachesCollection MaCollection
        {
            get { return _liste; }
        }
        #endregion
    }
    J'ai rajouté un constructeur prenant en paramètre la liste de tâches. Comme cela, ton objet tâche pourra la renvoyer.

    Sinon, un petit conseil, essaie d'utiliser les listes génériques, genre List<Tache>, à la place de créer une classe dérivant de CollectionBase. Peut-être que tu utilise le framework 1.1 ...

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par nerillis Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Tache 
    {
         #region Accesseurs
         public Taches MaCollection
         {
                get { return ???????????;}
         }
         #endregion
    }
    C'est quoi TacheS ?

    tu peux utiliser les propriétés, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public TachesCollection MaCollection{get; set;}
    A toi de lui donner une valeur dans le constructeur comme proposer ci-dessous ou ailleurs
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 81
    Points : 75
    Points
    75
    Par défaut
    Paul Musso, merci j'étais parti de mon côté moi aussi à devenir redéfinir la collection dans la classe qui gère ses items, mais je trouvait ca pas tres catholique de lui rappeler en dur cela à chaque fois.


    rad_hass, "tacheS", c'est ma classe collection, qui regroupe mes objets "tache",
    mais je ne savais pas quoi écrire pour get {} là où tu vois ==>"?????????" dans mon extrait de code.

    Merci.

  5. #5
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Points : 443
    Points
    443
    Par défaut
    Et bien, c'est pas si mal de garder une référence de la liste des tâches dans chaque tâche. C'est juste une référence, ça prend maxi 32 bits en mémoire . Tu trouvera ce pattern dans beaucoup d'API fournies par Microsoft.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    soit ton code n'est pas claire, soit je n'ai pas compris ce que tu veux faire, ma solution ça serait de faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Tache 
    {
         #region Accesseurs
         // c du c# 3 si tu ne peux pas l'utiliser remplaces cette expression par le couple variable privée / accesseur
         public Taches MaCollection{get; set;}
         #endregion
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class TachesCollection : CollectionBase
    {
            public TachesCollection() { }
            public Tache this[int index]
            {
                get  {   return ((Tache)List[index]);    }
            }
            public int Add(Tache pTache)
            {
                pTache.MaCollection = List;
                return (List.Add(pTache));
            }
    }
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/12/2008, 17h41
  2. Comment accéder à la frame de la classe
    Par guintolli dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2008, 11h55
  3. Réponses: 5
    Dernier message: 11/09/2007, 11h32
  4. [VB.Net] Comment accéder à une propriété de sous-classes ?
    Par druidev dans le forum Windows Forms
    Réponses: 13
    Dernier message: 05/09/2006, 15h14
  5. Comment Accéder au une classe d'un meme package
    Par CrazySeb dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2006, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo