【发布时间】:2015-11-22 00:33:58
【问题描述】:
我正在使用 MethodInfo 调用重载方法,该方法向我抛出异常 TargetParameterCount 不匹配,下面是我的代码
public class Device
{
public bool Send(byte[] d, int l, int t)
{
return this.Send(d, 0, l, t);
}
public bool Send(byte[] d, int l, int t,int t)
{
return true;
}
}
我正在调用这些函数。
public class dw
{
public bool BasicFileDownload(Device device)
{
Type devType = device.GetType();
byte [] dbuf = readbuff();
MethodInfo methodSend = deviceType.GetMethods().Where(m => m.Name =="Send").Last();
object invokeSend = methodOpen.Invoke(device, new object[] {dbuf,0,10,100 });
}
}
现在我正在尝试使用 4 个参数调用发送,但它抛出错误。
System.Reflection.TargetParameterCountException:参数计数不匹配。 在 System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化) 在 System.Reflection.MethodBase.Invoke(对象 obj,对象 [] 参数) 在 e:\sample\BDw.cs:line 146 中的 Download.BasicDownload.BasicFileDownload(Device device)
【问题讨论】:
-
见this,你必须先找到合适的方法(
GetMethod是第二个参数,指定类型数组)。 -
您在代码中使用了两个不同的 MethodInfo 对象。 methodOpen 用于 methodSend 中的 Send 方法以外的其他内容。这可能是您的问题,除非您只是打错了字。
标签: c#