如何得到IEnumerable <t>类型参数的无变量?</t>

时间:2012-05-13 08:23:01

标签: c# generics type-parameter

假设:

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

T关闭IEnumerable<XYZ>,我如何确定XYZ类型?

我没有变量可以开始。

2 个答案:

答案 0 :(得分:2)

您可以使用typeof(T),这样可以获得正确的类型信息。

答案 1 :(得分:2)

您可以使用LINQ: Building an IQueryable Provider - Part I中的TypeSystem.GetElementType方法获取typeof(XYZ)时的typeof(IEnumerable<XYZ>)

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

在您的方法中,您可以使用typeof(T)获取代表T的{​​{3}}对象。

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