benpage
benpage

Reputation: 4628

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

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

Upvotes: 2

Views: 149

Answers (2)

Sky Sanders
Sky Sanders

Reputation: 37104

try this to get the entity type of the table

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

Upvotes: 3

James Curran
James Curran

Reputation: 103565

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

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

Upvotes: 1

Related Questions