gpt4 book ai didi

c# - 按名称调用非静态方法

转载 作者:太空狗 更新时间:2023-10-29 17:45:17 25 4
gpt4 key购买 nike

我一直在尝试按名称调用方法,但问题是我调用的方法不能是静态的,它必须属于当前类。

我试过这样的方法:

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 }
);
}

但我得到 必须指定描述所需调用操作的绑定(bind)标志 (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”

最佳答案

尝试

 this.GetType().InvokeMember(
methodName,
BindingFlags.InvokeMethod,
null,
this,
new object[] { sender, e }
);

来自 MSDN

If InvokeMethod is specified by itself, BindingFlags.Public, BindingFlags.Instance, and BindingFlags.Static are automatically included

关于c# - 按名称调用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7218785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com