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 :

Insertion dans une IList


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Insertion dans une IList
    Bonjour à tous,

    Je voudrais savoir s'il est possible d'ajouter des éléments différents dans une IList en C#.

    J'explique :

    J'ai deux classes Product et Service qui implémente la même interface IItem. Un item à un ID et une Description. Cependant, dans la classe Service j'ai une dateDebut et une dateFin que je n'ai pas dans Product.

    J'ai créé une IList de type IItem. Je peux donc insérer des produits sans problème, mais lorsque j'arrive au service je ne peux insérer les éléments de la classe Service (dateDebut, dateFin).

    J'ai cherché, mais je nai pas trouvé comment résoudre mon problème et je ne crois pas que de créer deux listes différentes serait une bonne idée car ce sont tous les deux des items.

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    La réponse n est elle pas dans la question? Plutôt que de faire IList.Add(new Product()) tu peux faire IList.Add( new Service()) puisque ta liste a comme paramètre générique ITem qui est implémentée par les produits et les services.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Je comprends ce que tu dis et c'est très logique, mais mon problème est que je dois vérifier le ID de l'item afin de savoir si c'est un produit où un service et ensuie d'appeler la bonne instruction soit : listItem.Add(new Product()) ou listItem.Add(new Service()). De plus, je dois savoir à quelle contrat appartient l'item ainsi que lutilisateur qui à le contrat.

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par crisjax Voir le message
    Je comprends ce que tu dis et c'est très logique, mais mon problème est que je dois vérifier le ID de l'item afin de savoir si c'est un produit où un service et ensuie d'appeler la bonne instruction soit : listItem.Add(new Product()) ou listItem.Add(new Service()). De plus, je dois savoir à quelle contrat appartient l'item ainsi que lutilisateur qui à le contrat.

    Merci
    Un peu flou tout ça. Mais si j'ai bien compris tu as un item de type IITem et tu veux savoir si c'est de type Product ou Service alors l'opérateur is de C# peut t'aider. if vérifier la condition ou pour déterminer respectivement si c'est un produit ou un service.

    Question : pourquoi ne pas dériver Service de Product qui dérive lui de IITem ? je pose cette question vue que Service possède les même proprietés que Product avec en plus dateDebut et dateFin qui les différentient.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Réponse à h2s84
    Effectivement je vais dériver la classe Service de produit. Pour ce qui est du IS ca fonctionne très bien. Cependant j'ai une dernière chose qui ne fonctionne pas.

    - Comment creer une liste d'item(IList de type IItem) qui peut contenir des items Product et Service sachant qu'ils ont des attributs différents

    - Schéma : User --> Contract --> Item
    À quelle utilisateur appartient l'item afin d'afficher les items de l'utilisateur??

    Merci à l'avance

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par crisjax Voir le message
    - Comment creer une liste d'item(IList de type IItem) qui peut contenir des items Product et Service sachant qu'ils ont des attributs différents ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IList<IITem> myList = new List<IITem>();
    myList.Add(new Product());
    myList.Add(new Service());
    Je pense le code ci dessus devrait marcher vu que Product est un IITem et que Service est un Product qui est de type IITem (Principe d'héritage)

    Citation Envoyé par crisjax Voir le message
    - Schéma : User --> Contract --> Item
    À quelle utilisateur appartient l'item afin d'afficher les items de l'utilisateur??
    Pour cela Item doit posséder une référence à Contract et ce dernier avoir une réference User.
    Alors pour lister les items d'un user tu peux utiliser Linq to object en partant du principe que tu dois les contracts d'un items de telle sorte que chacun de ces contract soit identique à votre user.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IList<IITem> myList = new List<IITem>();
    myList.Add(new Product());
    myList.Add(new Service());
    Je pense le code ci dessus devrait marcher vu que Product est un IITem et que Service est un Product qui est de type IITem (Principe d'héritage)



    Pour cela Item doit posséder une référence à Contract et ce dernier avoir une réference User.
    Alors pour lister les items d'un user tu peux utiliser Linq to object en partant du principe que tu dois les contracts d'un items de telle sorte que chacun de ces contract soit identique à votre user.

    J'ai testé avec le code que tu m'a donné et effectivement je peux créer deux éléments différents dans ma liste. Le seul problème que j'ai est lorsque je veux afficher le contenu de ma liste.

    Je peux afficher les deux attributs ID et Description étant donné que la liste est de type IItem. Cependant lorsque j'arrive pour afficher la dateDebut et dateFin pour un service il ne trouve ps c'est deux attributs.

    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Pour l'affichage tu dois déclarer une fonction virtuelle afficher() dans ton interfact IITEm et chaque classe dérivant de Product peut avoir un override de ta fonction afficher().
    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
    18
    19
    20
    21
     
    public interface IITem
    {
    void afficher();
    }
     
    public class Product : IITem
    {
    public virtual void aficher()
    {
    .....
    }
    }
     
    public class Service : Product
    {
    public override void aficher()
    {
    .....
    }
    }
    lors de l'affichage tu utilise la méthode afficher() de ton objet Item.
    Dernière modification par Invité ; 03/03/2010 à 16h41.

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

Discussions similaires

  1. [debutant]insertion dans une BDD
    Par EssaiEncore dans le forum ASP
    Réponses: 7
    Dernier message: 10/02/2005, 14h58
  2. INTERBASE 5.5 insertion dans une colonne BLOB
    Par mariustrezor dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/10/2004, 18h06
  3. Extraction d'un .txt et Insertion dans une table
    Par PoPmiSiR dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2004, 19h13
  4. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 14h24
  5. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

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