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 :

Generiques en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 130
    Par défaut Generiques en C#
    Bonjour à tous,

    J'ai une question sur le fonctionnement des templates en C#. Est-il possible de spécifier le type du template au moment du runtime, et non de manière explicite dans le code ?

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void myFunction<T>() { (...)}
    Est-il possible de l'appeler non pas comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myFunction<String>();
    Mais plutôt en lui passant quelque chose dans le genre (mon exemple ne compile pas, d'où ma question):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Type type = typeof(String);
    myFunction<type>();
    J'ai l'impression que les templates sont gérés à la compilation en fait, du coup faudrait que je trouve une autre astuce, mais je pose la question pour en être sûr ;-)

    Merci d'avance

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Bonjour, c'est possible par réflection.
    Cordialement.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 130
    Par défaut
    Merci de ta réponse.
    Dans mon cas, c'est une fonction qui est générique, et non une classe. Je ne vois pas comment "créer" cette fonction en utilisant la réflexivité décrite dans la doc.

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    C'est le même principe :
    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
    using System;
    using System.Reflection;
     
    namespace ConsoleApplication1
    {
        class Person
        {
            public string Name {get; set;}
     
            public Person()
            {
                Name = "unknow";
            }
     
            public override string ToString()
            {
                return Name;
            }
        }
     
        class Display
        {
            public void Print<T> () where T : new ()
            {
                T arg = new T();
                Console.WriteLine(arg.ToString());
            }
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                Person person = new Person();
                MethodInfo method = typeof(Display).GetMethod("Print");
                MethodInfo generic = method.MakeGenericMethod(person.GetType());
                generic.Invoke(new Display(), null);
            }
        }
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 130
    Par défaut
    Ah oui effectivement
    Merci pour ta réponse

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

Discussions similaires

  1. variables generiques
    Par issou dans le forum C
    Réponses: 18
    Dernier message: 01/11/2005, 18h26
  2. [C++] Projet module IA générique pour MORPG.
    Par xterminhate dans le forum Projets
    Réponses: 5
    Dernier message: 21/08/2005, 11h22
  3. affectation de classes generiques
    Par Mehdi Feki dans le forum C++
    Réponses: 16
    Dernier message: 12/03/2005, 16h05
  4. [Template] Pb d'iterateur generique
    Par Cyber@l dans le forum C++
    Réponses: 2
    Dernier message: 10/03/2005, 20h13

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