2012-05-13 1 views
0

Дано:Как получить T из IEnumerable <T> параметр типа без переменной?

public T Get<T>() { ... } 

где T закрыта для IEnumerable<XYZ>, как я могу определить тип XYZ?

У меня нет переменной для начала.

+0

Вы имеете в виду: 'TReturn = Get()' TReturn ВСЕГДА '' IEnumberable и вам нужно найти тип 'XYZ'? – gideon

+0

Вы имеете в виду: 'class Foo : IEnumerable {public T Получить () {...} где T: IEnumerable '? – flq

ответ

2

Вы можете использовать метод TypeSystem.GetElementType от LINQ: Building an IQueryable Provider - Part I получить typeof(XYZ) когда данный typeof(IEnumerable<XYZ>):

var elementType = TypeSystem.GetElementType(typeof(IEnumerable<XYZ>)); 
// elementType == typeof(XYZ) 

В вашем методе, вы можете использовать typeof(T), чтобы получить Type объект, представляющий T.

public T Get<T>() 
{ 
    var elementType = TypeSystem.GetElementType(typeof(T)); 
    ... 
} 
2

Вы можете использовать typeof(T), что даст вам нужную информацию о типе.

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