繁体   English   中英

确定MethodInfo是否映射到使用关键字params的函数

[英]Determining if a MethodInfo maps to a function that uses the `params` keyword

我正在使用反射来基于用户输入到我的应用程序中的脚本来调用方法。 尝试将脚本标记映射到MethodInfo对象时,我想过滤掉使用params关键字的方法,因为这些函数的参数验证将不同于带有固定数量参数的函数的参数验证。

public double Average (params double [] parameters) {...}

反映出来的是,参数类型仅显示为double [] ,没有指示在编译时指定了params 我丢失了某些信息还是在编译过程中丢失了该信息。 目的是查明某个功能是否打算使用可变数量的参数。

任何指针将不胜感激。

该信息可以在您的方法的参数中找到,而不是在MethodInfo

因此,您应该检查ParameterInfo是否用[ParamArrayAttribute]装饰。 由于params修饰符只能应用于方法的最后一个参数,因此我想这样的方法应该起作用:

public bool MethodHasParams(MethodInfo mi) {
    var lastParameter = mi.GetParameters().LastOrDefault();
    if(lastParameter == null) return false;

    return lastParameter.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM