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 37
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 2367 Date d'inscription mardi 17 avril 2001 Statut Membre 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
Rejoignez-nous