如何获取不带变量的 IEnumerable 类型参数的 T

本文关键字:类型参数 IEnumerable 变量 何获取 获取 | 更新日期: 2023-09-27 18:34:11

给定:

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

如果TIEnumerable<XYZ>关闭,如何确定XYZ类型?

我没有变量可以开始。

如何获取不带变量的 IEnumerable<T> 类型参数的 T

您可以使用 LINQ:构建 IQueryable 提供程序 - 第 I 部分 中的 TypeSystem.GetElementType 方法,以便在给定typeof(IEnumerable<XYZ>)时获取typeof(XYZ)

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

在您的方法中,可以使用 typeof(T) 获取表示 T 的 Type 对象。

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

您可以使用 typeof(T) ,这将为您提供正确的类型信息。