是否可以获取方法接受的参数数量,然后分别访问这些参数的值?我想创建一个方法,它连接方法的所有参数的值,除了最后一个参数。但是,参数的数量和参数的名称取决于所访问的方法。
是否可以执行类似于以下伪代码的操作?
StringBuilder string = new StringBuilder();
for(int i = 0; i < Method.Parameters.Count - 1; i++)
{
string.Append(Method.Parameters[i].Value);
}
非常感谢:)
答案 0 :(得分:5)
这样做:
Type.GetType("MyClassType").GetMethod("foo").GetParameters().Length;
答案 1 :(得分:1)
如果你有像
这样的方法void Foo(string s, int x, int y, bool flag)
那么你不需要以编程方式确定参数的数量 - 你已经知道有4个参数。
{
StringBuilder sb = new StringBuilder().Append(s)
.Append(x)
.Append(y);
}
如果您希望该方法接受任意数量的参数,那么您可以使用params
keyword来定义您的方法,如下所示:
void Baz(params object[] args)
参数作为数组传递给您的方法,因此您可以从数组长度确定参数的数量:
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < args.Length - 1; i++)
{
sb.Append(args[i]);
}
}
用法:的
Baz("xyzzy", 42, 0, false);