泛型和反射(C# 编程指南)

因为公共语言运行时 (CLR) 能够在运行时访问泛型类型信息,所以可以使用反射获取关于泛型类型的信息,方法与用于非泛型类型的方法相同。有关更多信息,请参见 运行时中的泛型(C# 编程指南)

在 .NET Framework 2.0 中,有几个新成员添加到了 Type 类中,用以启用泛型类型的运行时信息。请参见有关这些类的文档来了解有关如何使用这些方法和属性的更多信息。System.Reflection.Emit 命名空间还包含支持泛型的新成员。请参见 如何:用反射发出定义泛型类型

有关泛型反射中使用的术语的固定条件列表,请参见 IsGenericType 属性备注。

System.Type 成员名称 说明
IsGenericType 如果类型为泛型,则返回 true。
GetGenericArguments 返回 Type 对象数组,这些对象表示为构造类型提供的类型变量,或泛型类型定义的类型参数。
GetGenericTypeDefinition 返回当前构造类型的基础泛型类型定义。
GetGenericParameterConstraints 返回表示当前泛型类型参数约束的 Type 对象的数组。
ContainsGenericParameters 如果类型或其任意封闭类型或方法包含没有被提供特定类型的类型参数,则返回 true。
GenericParameterAttributes 获取 GenericParameterAttributes 标志的组合,这些标志描述当前泛型类型参数的特殊约束。
GenericParameterPosition 对于表示类型参数的 Type 对象,获取类型参数在声明该类型参数的泛型类型定义或泛型方法定义的类型参数列表中的位置。
IsGenericParameter 获取一个值,该值指示当前 Type 是表示泛型类型定义的类型参数,还是泛型方法定义的类型参数。
IsGenericTypeDefinition 获取一个值,该值指示当前 Type 是否表示可以用来构造其他泛型类型的泛型类型定义。如果类型表示泛型类型的定义,则返回 true。
DeclaringMethod 返回定义当前泛型类型参数的泛型方法;如果类型参数不是由泛型方法定义的,则返回空值。
MakeGenericType 用类型数组的元素替代当前泛型类型定义的类型参数,并返回表示结果构造类型的 Type 对象。

此外,MethodInfo 类中还添加了新成员以启用泛型方法的运行时信息。有关泛型方法反射中使用的术语的固定条件列表,请参见 IsGenericMethod 属性备注。

System.Reflection.MemberInfo 成员名称 说明
IsGenericMethod 如果方法为泛型,则返回 true。
GetGenericArguments 返回 Type 对象数组,这些对象表示构造泛型方法的类型变量,或泛型方法定义的类型参数。
GetGenericMethodDefinition 返回当前构造方法的基础泛型方法定义。
ContainsGenericParameters 如果方法或其任意封闭类型包含没有被提供特定类型的任何类型参数,则返回 true。
IsGenericMethodDefinition 如果当前 MethodInfo 表示泛型方法的定义,则返回 true。
MakeGenericMethod 用类型数组的元素替代当前泛型方法定义的类型参数,并返回表示结果构造方法的 MethodInfo 对象。

请参阅

C# 编程指南

泛型(C# 编程指南)

反射类型和泛型类型

.NET Framework 中的泛型