泛型和反射

由于公共语言运行时(CLR)在运行时可以访问泛型类型信息,因此可以使用反射来获取有关泛型类型的信息,方式与非泛型类型相同。 有关详细信息,请参阅 运行时中的泛型

命名空间 System.Reflection.Emit 还包含支持泛型的新成员。 请参阅 如何使用反射发射定义泛型类型

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

  • IsGenericType:如果类型为泛型,则返回 true。
  • GetGenericArguments:返回表示为构造类型提供的类型参数或泛型类型定义的类型参数的对象数组 Type
  • GetGenericTypeDefinition:返回当前构造类型的基础泛型类型定义。
  • GetGenericParameterConstraints:返回表示当前泛型类型参数约束的对象数组 Type
  • ContainsGenericParameters:如果类型或任何其封闭类型或方法包含未提供特定类型的类型参数,则返回 true。
  • GenericParameterAttributes:获取描述当前泛型类型参数的特殊约束的 GenericParameterAttributes 标志组合。
  • GenericParameterPosition:对于 Type 表示类型参数的对象,获取类型参数在泛型类型定义的类型参数列表或声明类型参数的泛型方法定义中的位置。
  • IsGenericParameter:获取一个值,该值指示当前 Type 是否表示泛型类型或方法定义的类型参数。
  • IsGenericTypeDefinition:获取一个值,该值指示当前 Type 是否表示可以用来构造其他泛型类型的泛型类型定义。 如果类型表示泛型类型的定义,则返回 true。
  • DeclaringMethod:返回定义当前泛型类型参数的泛型方法;如果未由泛型方法定义类型参数,则返回 null。
  • MakeGenericType:替换当前泛型类型定义的类型参数的类型的数组元素,并返回一个 Type 表示生成的构造类型的对象。

此外,类的成员 MethodInfo 为泛型方法启用运行时信息。 有关用于反映泛型方法的术语的不变条件列表,请参阅IsGenericMethod属性备注。

另请参阅