2010-03-31 6 views
2

Я думаю, что это простой вопрос, но я искал вокруг и не могу найти ответ легко.Как получить аргумент типа общего типа?

, если у вас есть

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

ответ

3

попробовать это, чтобы получить тип объекта таблицы

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

хорошо .. не думал об этом! был слишком втянут в использование отражения .. duh! – benpage

+0

слишком много заметок .... ;-) http://www.youtube.com/watch?v=dCud8H7z7vU –

Смежные вопросы