使用参数进行反射调用c#错误

本文关键字:调用 错误 反射 参数 | 更新日期: 2023-09-27 18:28:48

我得到这个错误

"System.Reflection.TargetException",对象与目标不匹配类型

这是我的课

public clas Service 
{
  public DataTable ArticlesGet(string SearchValue = null, string SearchColumn = null, string SearchOperator = "%")
  {
    //Methods Here
  }
}

这是我的反射码

object obj = new Service();
Type Type = obj.GetType();
MethodInfo MethodInfo = Type.GetMethod("ArticlesGet");
MethodInfo.Invoke(Type, new object[] { "", "", "%" });  // Error

提前谢谢。

使用参数进行反射调用c#错误

试试这个简单的方法,它的代码简单明了:

   Type ty = typeof(Service);
   Service myTypeObject = (Service)Activator.CreateInstance(ty);
    DataTable myDataTable = myTypeObject.ArticlesGet("SearchValue", "SearchColumn", "SearchOperator");

您需要提供要调用该方法的实例,而不是其类型:

DataTable table = (DataTable) MethodInfo.Invoke(obj, new object[] { "", "", "%" }); 

Method.Invoke的第一个参数是对象的实例,在您的情况下应该是obj,而不是Type

只需要修复调用方法的第4行,就需要传递对象实例,而不是传递类Type对象。

object obj = new Service();
Type Type = obj.GetType();
MethodInfo MethodInfo = Type.GetMethod("ArticlesGet");
var dataTableObject = MethodInfo.Invoke(obj, new object[] { "", "", "%" });