2012-05-13 77 views
0

考慮:如何獲得IEnumerable的T <T>類型參數w/o變量?

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),這將爲您提供正確的類型信息。

相關問題