3

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

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

StringBuilder string = new StringBuilder();

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

非常感谢 :)

4

2 回答 2

5

这将做:

Type.GetType("MyClassType").GetMethod("foo").GetParameters().Length;
于 2013-08-08T08:40:49.877 回答
1

如果您有类似的方法

void Foo(string s, int x, int y, bool flag)

那么您不需要以编程方式确定参数的数量——您已经知道有 4 个参数。

{
    StringBuilder sb = new StringBuilder().Append(s)
                                          .Append(x)
                                          .Append(y);
}

如果您希望该方法接受任意数量的参数,那么您可以使用params关键字来定义您的方法,如下所示:

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);
于 2013-08-08T08:46:06.723 回答