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

时间:2010-03-31 00:13:00

标签: c# generics reflection

我认为这是一个简单的问题,但我一直在搜索,似乎无法轻易找到答案。

如果你有

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()

2 个答案:

答案 0 :(得分:3)

尝试此操作以获取表的实体类型

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

答案 1 :(得分:1)

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

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