什么是BindingFlags.InvokeMethod意味着什么?

时间:2010-08-12 15:39:27

标签: c# .net reflection

我有以下代码用于避免switch语句决定调用哪个方法,它只使用我设置的BindingFlags标志,而不是InvokeMethodInvokeMethod实际意味着什么,为什么在以下代码中不需要它:

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

2 个答案:

答案 0 :(得分:4)

InvokeMethod未使用

GetMethod,但是当您将BindingFlags传递给Type.InvokeMember时会使用它。

BindingFlags是一种奇怪的枚举,它结合了三个独立的功能部分(根据MSDN,'可访问性','绑定参数'和'操作')。无论何处需要BindingFlags参数,这三个功能都没有意义。

答案 1 :(得分:2)

来自MSDN InvokeMethod成员:

  

指定要调用方法。这不能是构造函数或类型初始值设定项。

它由InvokeMember方法使用。