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 :

Utilisation des interfaces dans des méthodes


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2005
    Messages : 51
    Par défaut Utilisation des interfaces dans des méthodes
    Bonjour à tous,

    Voici mon soucis :

    j'ai créé cette interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public interface IObject
    {
        List<String> ObtenirEntetes();
        List<String> ObtenirValeurs();
    }
    que j'utilise dans cette classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Groupe : IObject
    {
            public List<String> ObtenirValeurs() { [...] }
     
            public List<String> ObtenirEntetes() { [...] }
    }
    Puis dans une autre classe je définie la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void setList(List<IObject> listOp) { }
    puis j'essaye le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OO.setList(new List<IObject>());
    et à la compilation je me fais jeter car il ne sait pas caster ma List<Groupe> en List<IObject>.

    Pourtant ma classe Groupe implémente l'interface IObject.

    Merci pour toutes les aides

    a+

    Cyril

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Ce n'est pas parce que ta classe Group implémente IObject que tu auras une conversion implicite entre List<Group> et List<IObject>.

    Soit tu changes le prototype de ta méthode pour attendre une List<IObject> au lieu de List<Group>.
    Soit tu regardes du côté de la méthode ConvertAll.

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2005
    Messages : 51
    Par défaut
    Ouai j'y avais pensé mais c'est une liste provenant d'nhibernate donc pas facile de changer le prototype lol

    Je vais me retourner vers la méthode que tu parles en deuxième point et voir ce qu'elle peut faire

    Encore merci

  4. #4
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par défaut
    Si tu utilise le framework 3.5 tu peux peut-être passer par un truc du genre :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    class Program
        {
            static void Main(string[] args)
            {
                AutreClasse a = new AutreClasse();
                List<Groupe> g = new List<Groupe>();
                g.Add(new Groupe());
                a.setList(g.Cast<IObject>().ToList());
            }
        }
     
     
        public class AutreClasse
        {
            public void setList(List<IObject> objs)
            {
            }
        }
     
        public class Groupe : IObject
        {
            #region IObject Members
     
            public List<string> ObtenirEntetes()
            {
                throw new NotImplementedException();
            }
     
            public List<string> ObtenirValeurs()
            {
                throw new NotImplementedException();
            }
     
            #endregion
        }
     
     
        public interface IObject
        {
            List<String> ObtenirEntetes();
            List<String> ObtenirValeurs();
        }

  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
    Pourquoi ne pas rendre générique la méthode setList ? ce serait le plus simple non ?

  6. #6
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2005
    Messages : 51
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Pourquoi ne pas rendre générique la méthode setList ? ce serait le plus simple non ?
    Justement l'idée c'était d'être générique avec l'ensemble de mes objets nhibernate qui eux implémente l'interface IObject ...

    Tu peux être plus précis dans ce que tu avances ?

    Merci,

    Cyril

  7. #7
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2005
    Messages : 51
    Par défaut
    Citation Envoyé par oyigit Voir le message
    Si tu utilise le framework 3.5 tu peux peut-être passer par un truc du genre :

    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
    class Program
        {
            static void Main(string[] args)
            {
                AutreClasse a = new AutreClasse();
                List<Groupe> g = new List<Groupe>();
                g.Add(new Groupe());
                a.setList(g.Cast<IObject>().ToList());
            }
        }
     
     
        public class AutreClasse
        {
            public void setList(List<IObject> objs)
            {
            }
        }
    Effectivement je n'avais pas du tout pensé à ceci... pour l'instant j'ai contourné le problème en passant pas List<List<String>> .... (j'aurai pu aussi faire un tableau à 2D ...)

    Je vais voir pour ta solution si elle me convient

Discussions similaires

  1. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  2. Réponses: 8
    Dernier message: 21/05/2007, 23h59
  3. Réponses: 6
    Dernier message: 01/04/2007, 20h13
  4. Utilisation de tubes dans des fork
    Par je®ome dans le forum Linux
    Réponses: 4
    Dernier message: 31/05/2006, 21h50
  5. Réponses: 2
    Dernier message: 27/04/2006, 16h45

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