如何确定ParameterInfo是否是泛型类型?

sma*_*man 7 c# generics reflection methodinfo parameterinfo

我有MethodInfo一个GenericMethodDefinition.如:CallMethod<T>(T arg, string arg2).GetParameters()方法将为我提供两个ParameterInfo对象,第一个是通用的,第二个不是.如何让ParameterInfo告诉我它是通用的?如果它有约束怎么办?

SLa*_*aks 7

检查ParameterType.IsGenericParameter.
您可能还想检查ContainsGenericParameters,这对于类似的东西也是如此MyMethod<T>(List<T> param).(即使List<>不是通用参数)

如果IsGenericParameter是真的,你也可以打电话GetGenericParameterConstraints()让接口或基类的限制,并且可以检查GenericParameterAttributes(一个[Flags]枚举)的new(),structclass限制.