Généricité : type simple d'un tableau

Résolu
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
- 16 nov. 2006 à 22:39
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
- 17 nov. 2006 à 14:42
Bonjour,
je cherche avec les génériques à obtenir le type de l'objet auquel un tableau fait référence.
Je m'explique. Je veux créer une méthode générique qui reçoit en paramètre un tableau d'objets. Puis à l'intérieur de ma méthode, je souhaite créer une liste générique de ces objets. Il me faut pour créer cette liste  obtenir le type des objets contenus dans mon tableau passé en paramètre. Voici à quoi ressemble de code :
       
        public static T MaMethode<T>(T table) where T : IEnumerable
        {
            List<?> OutputTable = new List<?>(table1);
            ...

par exemple T pourrait être de type string[], il me faut alors récupérer le type string dans ?.
Savez-vous comment faire ?

merci d'avance.
Mathmax

4 réponses

sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
17 nov. 2006 à 09:14
et pourquoi pas faire tout simplement :

public static T MaMethode<T>(T[] table) 
        {
            List<T> OutputTable = new List<T>(table1);
            ...

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
3
TheSaib
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
23
16 nov. 2006 à 23:43
public



static
T MaMethode<T>(T table)

where
T :

IEnumerable
<T>{


List
<T> OutputTable =

new



List
<T>(table);


}
Je ne vois pas ce que tu veux de plus ?

::|The S@ib|:: MVP C#.NET
0
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

16 nov. 2006 à 23:52
non parce que table est un tableau et le type paramètre de liste n'en est pas. Par exemple supposons que j'appelle ma méthode comme celà :

MaMethode<string[]>(matable)

MaTable est de type string[], donc T est  le type string[]. Or je veux que OutputTable soit de type List<string> et si j'écris List<T>, c'est en fait List<string[]>. Il faut donc que je récupère le type string.

Mathmax
0
cs_mathmax
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

17 nov. 2006 à 14:42
oh non j'étais persuadé d'avoir écris ça. Mais en fait j'avais écris :
public static T MaMethode<T[]>(T[] table) ce qui évidement génère une erreur à la compilation...
Je suis vraiment désolé de vous avoir dérangé.
Merci pour votre aide en tout cas.

Mathmax
0