更正语法以按名称调用方法
本文关键字:调用 方法 语法 | 更新日期: 2023-09-27 18:35:21
下面的代码正确地找到了类和方法,但它给出了以下错误method.Invoke(this, null);
System.Reflection.TargetException was unhandled
HResult=-2146232829
Message=Object does not match target type.
Source=mscorlib
StackTrace:.....
调用 void 方法的正确语法是什么?
using System;
using System.Reflection;
using System.Windows;
namespace ProjectXYZ
{
class NavigateOptions
{
public bool runMethod(string debug_selectedClass)
{
Type t = Type.GetType("ProjectXYZ." + debug_selectedClass);
MethodInfo method = t.GetMethod("test");
if (method.IsStatic)
method.Invoke(null, null);
else
method.Invoke(this, null);
return true;
}
}
public class Option72
{
public void test()
{
string hasItRun = "Yes";
}
}
}
this
(从中调用方法的类)不是定义test()
方法的类。您必须提供该类的实例(由 debug_selectedClass
指示的实例)才能在其上调用非静态方法。
如果它有一个空的构造函数,你可以这样做:
if (method.IsStatic)
method.Invoke(null, null);
else
{
object instance = Activator.CreateInstance(t);
method.Invoke(instance, null);
}