当前位置:  开发笔记 > 编程语言 > 正文

确定参数是否在C#中使用反射使用"params"?

如何解决《确定参数是否在C#中使用反射使用"params"?》经验,为你挑选了3个好方法。

考虑这个方法签名:

public static void WriteLine(string input, params object[] myObjects)
{
    // Do stuff.
}

如何确定WriteLine方法的"myObjects"参数使用params关键字并且可以采用变量参数?



1> Mehrdad Afsh..:

检查[ParamArrayAttribute]它的存在.

参数with params将始终是最后一个参数.



2> CMS..:

检查ParameterInfo,如果ParamArrayAttribute已应用于它:

static bool IsParams(ParameterInfo param)
{
    return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}


如果您只想检查自定义属性的存在,但不需要实际的属性实例,那么`IsDefined`比`GetCustomAttributes`更有效.

3> Dejan..:

略微更短且更易读的方式:

static bool IsParams(ParameterInfo param)
{
    return param.IsDefined(typeof(ParamArrayAttribute), false);
}

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有