如何获得泛型类型的类型参数?

问题描述:

我认为这是一个简单的问题,但我已经搜索周围,似乎无法轻松找到答案。如何获得泛型类型的类型参数?

,如果你有

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

,你想在列表中的泛型类型,我知道你可以只输入:

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

有另一种方式通过只是名单要做到这一点,而不是指枚举?

原因是,我有一个System.Data.Linq.Table<TABLE1>,我想要做的是从它得到TABLE1的类型。

这样:

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

试试这个让表的实体类型

var tableType =table.GetType().GetGenericArguments()[0]; 

Type GetType<T>(Table<T> table) 
{ 
    return typeof(T); 
} 

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

以及..没想到!太反感了......呃! – benpage 2010-03-31 00:21:13

+0

太多笔记.... ;-) http://www.youtube.com/watch?v=dCud8H7z7vU – 2010-03-31 00:22:48