泛型和反射(C# 编程指南)
因为公共语言运行时 (CLR) 能够在运行时访问泛型类型信息,所以可以使用反射获取关于泛型类型的信息,方法与用于非泛型类型的方法相同。 有关更多信息,请参见运行时中的泛型(C# 编程指南)。
在 .NET Framework 2.0 中,有几个新成员添加到了 Type 类中,用以启用泛型类型的运行时信息。 请参见有关这些类的文档来了解有关如何使用这些方法和属性的更多信息。System.Reflection.Emit 命名空间还包含支持泛型的新成员。 请参见 如何:用反射发出定义泛型类型。
有关泛型反射中使用的术语的固定条件列表,请参见 IsGenericType 属性备注。
System.Type 成员名称 |
说明 |
---|---|
如果类型为泛型,则返回 true。 |
|
返回 Type 对象数组,这些对象表示为构造类型提供的类型变量,或泛型类型定义的类型参数。 |
|
返回当前构造类型的基础泛型类型定义。 |
|
返回表示当前泛型类型参数约束的 Type 对象的数组。 |
|
如果类型或其任意封闭类型或方法包含没有被提供特定类型的类型参数,则返回 true。 |
|
获取 GenericParameterAttributes 标志的组合,这些标志描述当前泛型类型参数的特殊约束。 |
|
对于表示类型参数的 Type 对象,获取类型参数在声明该类型参数的泛型类型定义或泛型方法定义的类型参数列表中的位置。 |
|
获取一个值,该值指示当前 Type 是表示泛型类型定义的类型参数,还是泛型方法定义的类型参数。 |
|
获取一个值,该值指示当前 Type 是否表示可以用来构造其他泛型类型的泛型类型定义。 如果类型表示泛型类型的定义,则返回 true。 |
|
返回定义当前泛型类型参数的泛型方法;如果类型参数不是由泛型方法定义的,则返回空值。 |
|
用类型数组的元素替代当前泛型类型定义的类型参数,并返回表示结果构造类型的 Type 对象。 |
此外,MethodInfo 类中还添加了新成员以启用泛型方法的运行时信息。 有关泛型方法反射中使用的术语的固定条件列表,请参见 IsGenericMethod 属性备注。
System.Reflection.MemberInfo 成员名称 |
说明 |
---|---|
如果方法为泛型,则返回 true。 |
|
返回 Type 对象数组,这些对象表示构造泛型方法的类型变量,或泛型方法定义的类型参数。 |
|
返回当前构造方法的基础泛型方法定义。 |
|
如果方法或其任意封闭类型包含没有被提供特定类型的任何类型参数,则返回 true。 |
|
如果当前 MethodInfo 表示泛型方法的定义,则返回 true。 |
|
用类型数组的元素替代当前泛型方法定义的类型参数,并返回表示结果构造方法的 MethodInfo 对象。 |