C# 确定MethodInfo是否映射到使用'params'关键字的函数
我使用反射根据用户输入到我的应用程序中的脚本调用方法。当尝试将脚本标记映射到C# 确定MethodInfo是否映射到使用'params'关键字的函数,c#,.net,parameters,delegates,params,C#,.net,Parameters,Delegates,Params,我使用反射根据用户输入到我的应用程序中的脚本调用方法。当尝试将脚本标记映射到MethodInfo对象时,我想过滤掉使用params关键字的方法,因为这些函数的参数验证不同于具有固定数量参数的函数的参数验证 public double Average (params double [] parameters) {...} 在反射中,参数类型仅显示为double[],没有指示编译时指定了params。是我遗漏了什么,还是在编译过程中丢失了这些信息。目的是确定函数是否打算使用数量可变的参数 publ
MethodInfo
对象时,我想过滤掉使用params
关键字的方法,因为这些函数的参数验证不同于具有固定数量参数的函数的参数验证
public double Average (params double [] parameters) {...}
在反射中,参数类型仅显示为double[]
,没有指示编译时指定了params
。是我遗漏了什么,还是在编译过程中丢失了这些信息。目的是确定函数是否打算使用数量可变的参数
public double Average (params double [] parameters) {...}
任何指针都将不胜感激。这些信息可以在方法的参数中找到,而不是在
MethodInfo
中
因此,您应该检查参数信息
是否用[paramaryattribute]
修饰。由于只能应用于方法的最后一个参数,我认为类似的方法应该可以工作:
public bool MethodHasParams(MethodInfo mi) {
var lastParameter = mi.GetParameters().LastOrDefault();
if(lastParameter == null) return false;
return lastParameter.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
paramaryattribute
正是我想要的,谢谢!