C # Ошибка несоответствия счетчика параметров при передаче массива объектов в методе invoke (Reflection) - PullRequest
2 голосов
/ 09 сентября 2010

Я пытаюсь вызвать функцию динамически и передать аргумент, не знаю, почему она выдает ошибку.

Assembly objAssembly;
objAssembly = Assembly.GetExecutingAssembly();

//get the class type information in which late bindig applied 
Type classType = objAssembly.GetType("Project." +strClassname);

//create the instance of class using System.Activator class 
object obj = Activator.CreateInstance(classType);

//fixed object  objValue[5];/* = new object[5];
object[] _objval = new object[3];

MethodInfo mi = classType.GetMethod("perFormAction");
mi.Invoke(obj, **_objval**); // Error here ..

Я не знаю, почему она выдает здесь несоответствие количества параметров.

Ответы [ 2 ]

7 голосов
/ 09 сентября 2010

Хорошо - обратите внимание, что параметр вашего метода является единственным параметром, тип которого - массив объектов.Следовательно, вам нужно передать его таким же образом.Например,

object[] _objval = new object[3];
....     // Fill the array with values to be supplied here
object[] parameters = new object[] { _objval }; // one parameter of type object array
...
mi.Invoke(obj, parameters);
0 голосов
/ 09 сентября 2010

В своем реальном коде вы заполняете массив _objVal или нет? Если вы этого не сделаете, возможно, проблема в том, что MethodInfo.Invoke необходимо знать тип параметров, чтобы найти потенциально перегруженный метод.

А что является сигнатурой метода perFormAction?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...