如果方法的最后一个参数用’params’标记,reflection是否会暴露?

在方法定义上使用reflection我想知道原始方法是否在最后一个参数上使用’params’定义。 那么我能否发现原始定义是否是这样的……

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

……而不是……

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

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

但是我找不到任何指示如何使用reflection发现这个的文档。

使用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)); } } }