Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定MethodInfo是否映射到使用'params'关键字的函数_C#_.net_Parameters_Delegates_Params - Fatal编程技术网

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
正是我想要的,谢谢!