How do I get the type argument of a generic type?

2019-07-15 05:24发布

i think this is a simple question but I've searched around and can't seem to find an answer easily.

if you have

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

and you want to get the generic type in list, i realise you could just type:

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

Is there another way to do this via just the list, rather than referring to the enumeration?

Reason is, i have a System.Data.Linq.Table<TABLE1> and what i want to do is get the type of TABLE1 from it.

so:

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

2条回答
放我归山
2楼-- · 2019-07-15 06:06
Type  GetType<T>(Table<T> table)
{
    return typeof(T);
}

var table = new DataContext().TABLE1s; // this is Table<TABLE1>  
var tableType = GetType(table);
查看更多
迷人小祖宗
3楼-- · 2019-07-15 06:16

try this to get the entity type of the table

var tableType =table.GetType().GetGenericArguments()[0];
查看更多
登录 后发表回答