使用参数进行反射调用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
提前谢谢。
试试这个简单的方法,它的代码简单明了:
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[] { "", "", "%" });