Моя психическая отладка предполагает, что подпись setValues
выглядит следующим образом:
public void setValues(int[] vals);
И вы передаете int[]
на Invoke
, вот так:
int[] arguments = new int[] { 1, 2, 3 };
objectType.GetMethod("setValues").Invoke(testClass, arguments);
Это не работает, потому что object[]
, который вы передаете Invoke
, выровнен для создания фактического списка аргументов. Другими словами, ваш вызов эквивалентен вызову setValues(1, 2, 3)
, который не работает, потому что setValues
хочет один int[]
параметр, а не ряд int
параметров. Вам необходимо сделать следующее:
int[] values = new int[] { 1, 2, 3 };
object[] arguments = new object[] { values };
objectType.GetMethod("setValues").Invoke(testClass, arguments);