我有一个通用方法定义。例如:MethodInfo。getparameters()方法将给我两个parameterinfo对象,第一个是泛型的,第二个不是。如何让parameterinfo告诉我它是通用的?如果有限制呢?

最佳答案

检查ParameterType.IsGenericParameter
您可能还需要检查ContainsGenericParameters,这对于MyMethod<T>(List<T> param)之类的内容是正确的。(即使List<>不是泛型参数)
如果IsGenericParameter是真的,您还可以调用GetGenericParameterConstraints()来获取接口或基类型约束,并且可以检查GenericParameterAttributes(a[Flags]enum)中的new()structclass约束。

08-18 23:47