Что такое BindingFlags.Предназначен предназначен для?



У меня есть следующий код, используемый, чтобы избежать оператора 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!");
}
760   2  

2 ответов:

InvokeMethod не используется GetMethod, но используется, когда вы передаете BindingFlags Type.InvokeMember.

BindingFlags это странный вид перечисления, который сочетает в себе три отдельных элемента функциональности (в соответствии с MSDN, "доступность", "аргумент привязки" и "операция"). Эти три части функциональности не имеют смысла везде, где требуется параметр BindingFlags.

Из MSDN член InvokeMethod:

Указывает, что должен быть вызван метод. Это не должен быть конструктор или инициализатор типа.

Он используется InvokeMember метод.

Comments

    Ничего не найдено.