2010-03-31 6 views
2

Je pense que c'est une question simple mais j'ai cherché autour et ne peux pas sembler trouver une réponse facilement.Comment obtenir l'argument type d'un type générique?

si vous avez

var list = List<int>(); 
... fill list ... 

et que vous voulez obtenir le type générique dans la liste, je me rends compte que vous pouvez simplement taper:

var t = list.FirstOrDefault().GetType(); 

Y at-il une autre façon de le faire via juste la liste , plutôt que de se référer à l'énumération?

Raison est, j'ai un System.Data.Linq.Table<TABLE1> et ce que je veux faire est d'obtenir le type de TABLE1 à partir de celui-ci.

donc:

var table = new DataContext().TABLE1s; // this is Table<TABLE1> 
var tableType = table.GetType().SomeMethod(); 
// i want tableType to equal TABLE1.GetType() 

Répondre

3

essayer ceci pour obtenir le type d'entité de la table

var tableType =table.GetType().GetGenericArguments()[0]; 
1
Type GetType<T>(Table<T> table) 
{ 
    return typeof(T); 
} 

var table = new DataContext().TABLE1s; // this is Table<TABLE1> 
var tableType = GetType(table); 
+0

bien .. ne pense pas que cela! était trop pris dans l'utilisation de la réflexion .. duh! – benpage

+0

trop de notes .... ;-) http://www.youtube.com/watch?v=dCud8H7z7vU –

Questions connexes