在方法定义上使用反射我想查明原始方法是否在最后一个参数上使用“params”定义。那么我能不能发现原来的定义是不是这样的……
public void MyMethod(int x, params object[] args);
...不是这个...
public void MyMethod(int x, object[] args);
我的代码有一个参数列表,并使用反射来调用任意方法。如果它标有'params'那么我想将额外的参数打包到一个对象[]中并调用该方法。如果参数未标记为“params”,那么我会指示错误。所以我想提供与 C# 相同的语义。
但我找不到任何指示如何使用反射发现它的文档。
最佳答案
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));
}
}
}
关于c# - 如果方法的最后一个参数标记为 'params',反射是否会暴露?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252656/