我有以下代碼用於避免switch
語句來決定調用哪個方法,並且它只與我設置的BindingFlags標誌一起使用,沒有InvokeMethod
。什麼是InvokeMethod
實際上意味着,爲什麼它沒有在下面的代碼需要:BindingFlags.InvokeMethod的意思是什麼?
public enum PublishMethods
{
Method1,
Method2,
Method3
}
private void Form1_Load(object sender, EventArgs e)
{
InvokePublishMethod(PublishMethods.Method2);
}
private void InvokePublishMethod(PublishMethods publishMethod)
{
var publishMethodsType = this.GetType();
var method = publishMethodsType.GetMethod("Publish" + publishMethod, BindingFlags.NonPublic | BindingFlags.Instance);
method.Invoke(this, null);
}
private void PublishMethod2()
{
MessageBox.Show("Method2!");
}
啊,所以我不需要'GetMethod'來調用它,只需'InvokeMethod'。太好了!然而,在這種情況下,我更喜歡'GetMethod',所以如果方法不存在,我可以構造一個錯誤消息。 – ProfK 2010-08-12 18:31:12