确定方法接受的参数数量

时间:2013-08-08 08:38:38

标签: c# string methods parameters

是否可以获取方法接受的参数数量,然后分别访问这些参数的值?我想创建一个方法,它连接方法的所有参数的值,除了最后一个参数。但是,参数的数量和参数的名称取决于所访问的方法。

是否可以执行类似于以下伪代码的操作?

StringBuilder string = new StringBuilder();

for(int i = 0; i < Method.Parameters.Count - 1; i++)
{
     string.Append(Method.Parameters[i].Value);
}

非常感谢:)

2 个答案:

答案 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);