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

C# Discussion :

propriété retournant une liste d'interface


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut propriété retournant une liste d'interface
    Bonjour

    J'ai les interfaces suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    interface IDslr
    {
        List<ICamera> CamerasList
        {
            get;
        }
     
    //...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    interface ICamera
    {
    //...
    }
    Ainsi que deux classes (pour le moment) implémentant ces deux interfaces. La classe implémentant ICamera (CameraType1) ne me pose pas de problème, laissons-là de côté.

    Celle qui me pose problème est celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Dslr : IDslr
    {
        public List<...> CamerasList
        {
            get 
            {
                List<...> list = new List<...>();
                //...
            }
        }
    }
    La propriété CamerasList devrait me retourner une liste d'élément de type Camera (qui implémente ICamera).

    Est-ce possible de faire cela ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    bah ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Dslr : IDslr
    {
        public List<ICamera> CamerasList
        {
            get 
            {
                List<ICamera> list = new List<...>();
                //...
                return list;
            }
        }
    }
    Si dans ton interface tu dit que ça doit renvoyer List<ICamera>, tu es obligé de renvoyer ICamera mais si Camera implémente ICamera, tu peux rajouter des Camera à la liste.
    Ou alors tu fais une interface générique mais là ça deviens vite sportif ...

  3. #3
    Invité
    Invité(e)
    Par défaut
    tu es obligé de renvoyer ICamera mais si Camera implémente ICamera, tu peux rajouter des Camera à la liste.
    C'est vrai. Mais j'aurais voulu limiter les possibilités. Que la liste de Dslr ne puisse contenir que des Camera, que Dslr2 ne puisse contenir que des Camera2, ...

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Citation Envoyé par JuTs Voir le message
    C'est vrai. Mais j'aurais voulu limiter les possibilités. Que la liste de Dslr ne puisse contenir que des Camera, que Dslr2 ne puisse contenir que des Camera2, ...

    Dslr, Dslr2 et Camera, Camera2 sont des classe différentes ou des instances de classe?

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Ben, passe par des génériques, c'est le plus simple.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Bobbledople Voir le message
    Dslr, Dslr2 et Camera, Camera2 sont des classe différentes ou des instances de classe?
    Ce sont des classes différentes

    Dslr implémente : IDslr
    Dslr2 implémente : IDslr
    Camera implémente : ICamera
    Camera2 implémente : ICamera

    CamerasList de Dslr contient des Camera uniquement.
    et CamerasList de Dslr2 contient des Camera2 uniquement.


    Citation Envoyé par Bluedeep Voir le message
    Ben, passe par des génériques, c'est le plus simple.
    ça : http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx ?

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Exactement,

    Si le code de Dsrl et Dsrl2 est identique et que tu as fait deux classe suniquement pour présiser que Dsrl prend des Camera et Dsrl2 prend des Camera2 alors tu ferais aussi bien de faire des génériques

    Quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    interface IDslr<T> where T : ICamera
    {
        List<T> CamerasList
        {
            get;
        }
     
    //...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Dslr<T> : IDslr<T> 
    {
        public List<T> CamerasList
        {
            get 
            {
                List<T> list = new List<T>();
                //...
                return list;
            }
        }
    }
    que tu utilises comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dslr<Camera> dslr1 = new Dslr<Camera>();
    Dslr<Camera2> dslr1 = new Dslr<Camera2>();

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

Discussions similaires

  1. Retourner une liste privée des multiples d'un nombre
    Par Premium dans le forum Langage
    Réponses: 2
    Dernier message: 08/10/2006, 22h50
  2. Réponses: 4
    Dernier message: 24/05/2006, 14h40
  3. retourner une liste ??
    Par lykim dans le forum C++
    Réponses: 8
    Dernier message: 11/04/2006, 11h07
  4. methode qui retourne une liste d'objets du meme type
    Par anoukhan dans le forum Oracle
    Réponses: 8
    Dernier message: 12/01/2006, 18h38
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

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