我有以下代码用于避免switch
语句决定调用哪个方法,它只使用我设置的BindingFlags标志,而不是InvokeMethod
。 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!");
}
答案 0 :(得分:4)
InvokeMethod
未使用 GetMethod
,但是当您将BindingFlags
传递给Type.InvokeMember
时会使用它。
BindingFlags
是一种奇怪的枚举,它结合了三个独立的功能部分(根据MSDN,'可访问性','绑定参数'和'操作')。无论何处需要BindingFlags
参数,这三个功能都没有意义。
答案 1 :(得分:2)