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 :

Classes génériques - problème d'instanciation


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut Classes génériques - problème d'instanciation
    Bonjour,

    J'essaie de manipuler une classe générique et de l'instancier dans une méthode qui aurait reçu le type par un paramètre.
    Le code ci-dessous expose de manière concrète le problème.

    Quelqu'un aurait une idée?

    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
     
    public class GenericTable<T>
    {
    	// cette méthode générique ne sera jamais utilisée, elle sera systématiquement écrasée par les classes héritées
    	public virtual List<T> list()
    	{
    		return new List<T>();
    	}
    }
     
    public class Groupe : GenericTable<Groupe>
    {
    	public override List<Groupe> list()
    	{
    		List<Groupe> lst = new List<Groupe>();
    		// Alimentation de la liste
    		return lst;
    	}
    }
     
    Dans une méthode d'une classe winform:
    {
            // cbGroupe est un composant dérivé d'une combobox
            // toutes mes combobox sont alimentées à partir d'une classe disposant d'une méthode list
            // d'où la constitution des classes ci-dessus
            cbGroupe.setProperties("xx", "yy", typeof(Groupe);
    }
     
    public void setProperties(string prop1, string prop2, Type t)
    {
    	// Ici, je voudrais appeler la méthode list d'un objet de type t
    	// les instructions ci-dessous ne fonctionnent pas car je ne peux utiliser t de cette façon
    	// bien qu'il s'agisse bien du type Groupe
    	GenericTable<t> obj = new GenericTable<t>();
    	DataSource = obj.list();
    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 208
    Par défaut
    Rend la fonction setProperties également générique avec setProperties<T>


    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
    Dans une méthode d'une classe winform:
    {
            // cbGroupe est un composant dérivé d'une combobox
            // toutes mes combobox sont alimentées à partir d'une classe disposant d'une méthode list
            // d'où la constitution des classes ci-dessus
            cbGroupe.setProperties<Groupe>("xx", "yy");
    }
     
    public void setProperties<T>(string prop1, string prop2)
    {
    	// Ici, je voudrais appeler la méthode list d'un objet de type t
    	// les instructions ci-dessous ne fonctionnent pas car je ne peux utiliser t de cette façon
    	// bien qu'il s'agisse bien du type Groupe
    	GenericTable<T> obj = new GenericTable<T>();
    	DataSource = obj.list();
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    Excellente réponse, je n'y avais pas pensé!
    En plus, ce sera plus propre au niveau du code :-)

    Un grand merci pour ton aide !

    Citation Envoyé par Troopers Voir le message
    Rend la fonction setProperties également générique avec setProperties<T>


    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
    Dans une méthode d'une classe winform:
    {
            // cbGroupe est un composant dérivé d'une combobox
            // toutes mes combobox sont alimentées à partir d'une classe disposant d'une méthode list
            // d'où la constitution des classes ci-dessus
            cbGroupe.setProperties<Groupe>("xx", "yy");
    }
     
    public void setProperties<T>(string prop1, string prop2)
    {
    	// Ici, je voudrais appeler la méthode list d'un objet de type t
    	// les instructions ci-dessous ne fonctionnent pas car je ne peux utiliser t de cette façon
    	// bien qu'il s'agisse bien du type Groupe
    	GenericTable<T> obj = new GenericTable<T>();
    	DataSource = obj.list();
    }

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/02/2013, 23h27
  2. Problème avec une classe générique
    Par Core8 dans le forum C++
    Réponses: 3
    Dernier message: 19/03/2007, 03h18
  3. [JSP-Bean] Probléme d'instanciation d'une classe !
    Par adil_vpb dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 02/03/2007, 19h29
  4. Problème d'instanciation d'une classe
    Par Jahjouh dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2007, 12h50
  5. problème pour instancier une class
    Par gronaze dans le forum C++
    Réponses: 8
    Dernier message: 30/06/2006, 12h21

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