开发者

C# Parameter count mismatch error while passing object array in invoke method( Reflection)

I am trying to call function dynamically here and passing argument, don't know why it throws error there.

Assembly objAssembly;
objAssembly = Assembly.GetExecutingAssembly();

//get the class type information in which late bindig applied 
Type classType = objAssembly.GetType("Project." 开发者_StackOverflow+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 ..

I don't know why it throws parameter count mismatch here.


Ok - so notice that the parameter to your method is a single parameter whose type is object array. Hence you need pass it in the same way. For example,

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);


In your real code, do you fill the _objVal array or not ? If you don't, there's possibly the issue that MethodInfo.Invoke needs to know the type of the parameters in order to find the potentially overloaded method.

And what is the signature of the perFormAction method ?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜