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

如果方法的最后一个参数标记为'params',反射是否会暴露?

如何解决《如果方法的最后一个参数标记为'params',反射是否会暴露?》经验,为你挑选了1个好方法。

在方法定义上使用反射我想知道原始方法是否在最后一个参数上使用'params'定义.那么我能否发现原始定义是否是这个......

public void MyMethod(int x, params object[] args);

......而不是......

public void MyMethod(int x, object[] args);

我的代码有一个参数列表,并使用反射来调用任意方法.如果它标有'params',那么我想将额外的参数打包到一个对象[]中并调用该方法.如果参数没有用'params'标记,那么我会指出错误.所以我想提供与C#相同的语义.

但我找不到任何指示如何使用反射发现这个的文档.



1> aku..:

使用ParamArrayAttribute属性

class Program
{
    public void MethodWithParams(object param1, params int[] param2) 
    {            
    }

    static void Main(string[] args)
    {
        var method = typeof(Program).GetMethod("MethodWithParams");
        var @params = method.GetParameters();
        foreach (var param in @params) 
        {
            Console.WriteLine(param.IsDefined(typeof(ParamArrayAttribute), false));
        }
    }
}

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