假设我有一个类型为System.Reflection.MethodInfo
的对象,如何提取泛型参数的约束条件?不知道为什么我找不到有用的信息。
假设我有一个类型为System.Reflection.MethodInfo
的对象,如何提取泛型参数的约束条件?不知道为什么我找不到有用的信息。
您需要做的就是获取通用方法定义,并在其中列出通用参数:
method
.GetGenericMethodDefinition()
.GetGenericArguments()
.Select(i => i.GetGenericParameterConstraints())
.Dump();
class
实际上根本不是类型约束,而 struct
被“翻译”为 System.ValueType
(这也不太令人惊讶)。new()
也不是类型约束,因此此方法无法找到它。Select
中使用 GenericParameterAttributes
属性。例如,struct
约束将给出 NotNullableValueTypeConstraint | DefaultConstructorConstraint
。GetGenericMethodDefinition
调用。如果有疑问,请问自己 - 我能调用此方法(或实例化一个类型)吗? 如果答案是肯定的,那么你的方法(或类型)是实例化的,你需要获得更通用的方法(或类型)。 - Luaan你可能正在寻找 Type.GetGenericParameterConstraints 方法()
返回一个 Type 对象数组,表示当前泛型类型参数的约束。
还有 Type.GetGenericArguments 方法()
返回一个 Type 对象数组,表示封闭泛型类型的类型参数或泛型类型定义的类型参数。