我一直在尝试按名称调用方法,但问题是我调用的方法不能是静态的,它需要属于当前类。
我已经尝试了以下方式:
这显然只适用于静态成员,所以我尝试了类似下面的方法。
我已经尝试了以下方式:
public static void InvokeMenuMethod(string methodName, object sender, EventArgs e)
Type calledType = Type.GetType("MyNamespace.MyClass");
calledType.InvokeMember(
methodName,
BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static,
null,
null,
new object[] { sender, e }
);
}
这显然只适用于静态成员,所以我尝试了类似下面的方法。
public static void InvokeMenuMethod(string methodName, object sender, EventArgs e)
Type calledType = Type.GetType("this");
calledType.InvokeMember(
methodName,
BindingFlags.InvokeMethod | BindingFlags.Public,
null,
null,
new object[] { sender, e }
);
}
但是我遇到了错误:必须指定描述所需调用操作的绑定标志(BindingFlags.InvokeMethod CreateInstance GetField SetField GetProperty SetProperty)。 参数名:bindingFlags
那么我该如何解决呢?
编辑:
所以:
public void InvokeMenuMethod(string methodName, object sender, EventArgs e) {
Type.GetType("this").InvokeMember(
methodName,
BindingFlags.InvokeMethod,
null,
this,
new object[] { sender, e }
);
}
出现了NullReferenceException
解决方案:
Type.GetType("this")
中没有"this"
BindingFlags.Instance
了吗? - Steven