C# - 如何使用Reflection调用具有可变数量参数的静态方法

时间:2014-10-14 18:46:00

标签: c# asp.net exception reflection

我想通过反思识别以下方法:

String.Concat(params string[] args);

这就是我的尝试:

MethodInfo concatMethod = typeof(string).GetMethod("Concat", new Type[] { typeof(string[]) });

正确识别该方法,但是当我尝试调用它时:

object concatResult = concatMethod.Invoke(null, new object[] { "A", "B" });

我得到以下异常:

TargetParameterCountException: Parameter count mismatch.

另请注意,我将null作为实例参数传递给Invoke方法,这是因为该方法是静态的,因此不需要实例。这种方法是否正确?

PS :我想模拟以下调用:

String.Concat("A", "B");

1 个答案:

答案 0 :(得分:4)

输入数组的每个元素都是方法的参数。您Concat的重载需要一个string[]参数,因此您需要:

object concatResult = concatMethod.Invoke(null, new object[] { new string[] { "A", "B" } });