Я хочу идентифицировать следующий метод посредством отражения:
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");
Каждый элемент входного массива является параметром метода. Для перегрузки Concat
вас есть один аргумент string[]
поэтому вам нужно:
object concatResult = concatMethod.Invoke(null, new object[] { new string[] { "A", "B" } });
new object[] { new string[] { "A", "B" } }
.