泛型和反射
因为公共语言运行时 (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 属性注解:
- IsGenericMethod:如果方法是泛型,则返回 true。
- GetGenericArguments:返回类型对象的数组,这些对象表示构造泛型方法的类型实参或泛型方法定义的类型形参。
- GetGenericMethodDefinition:返回当前构造方法的基础泛型方法定义。
- ContainsGenericParameters:如果方法或任何其封闭类型包含未提供特定类型的任何类型参数,则返回 true。
- IsGenericMethodDefinition:如果当前 MethodInfo 表示泛型方法的定义,则返回 true。
- MakeGenericMethod:用类型数组的元素替代当前泛型方法定义的类型参数,并返回表示结果构造方法的 MethodInfo 对象。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈