gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:13:28 24 4
gpt4 key购买 nike

在方法定义上使用反射我想查明原始方法是否在最后一个参数上使用“params”定义。那么我能不能发现原来的定义是不是这样的……

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

...不是这个...

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

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

但我找不到任何指示如何使用反射发现它的文档。

最佳答案

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

关于c# - 如果方法的最后一个参数标记为 'params',反射是否会暴露?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/252656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com