Как использовать Reflection для вызова статического метода с переменным количеством параметров

1

Я хочу идентифицировать следующий метод посредством отражения:

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");
  • 3
    Попробуйте вместо этого использовать new object[] { new string[] { "A", "B" } } .
  • 0
    Спасибо, это сработало! : D
Теги:
reflection
exception

1 ответ

4
Лучший ответ

Каждый элемент входного массива является параметром метода. Для перегрузки Concat вас есть один аргумент string[] поэтому вам нужно:

object concatResult = concatMethod.Invoke(null, new object[] { new string[] { "A", "B" } });
  • 0
    Спасибо большое, сработало как положено. Я отмечу как правильный ответ, как только смогу

Ещё вопросы

Сообщество Overcoder
Наверх
Меню