我一直在試圖通過名稱調用方法,但問題是我調用的方法不能是靜態的,它需要是當前類。通過名稱調用非靜態方法
我試着做這樣的方式:
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 }
);
}
,但我得到Must specify binding flags describing the invoke operation required (BindingFlags.InvokeMethod CreateInstance GetField SetField GetProperty SetProperty). Parameter name: 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")
有無你嘗試過'BindingFlags.Instance'? – Steven
請看我改變的代碼 - GetType(「this」)給你的例外,因爲它是錯誤的... – Yahia