Что такое 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!");
}
2 ответов:
InvokeMethodне используетсяGetMethod, но используется, когда вы передаетеBindingFlagsType.InvokeMember.
BindingFlagsэто странный вид перечисления, который сочетает в себе три отдельных элемента функциональности (в соответствии с MSDN, "доступность", "аргумент привязки" и "операция"). Эти три части функциональности не имеют смысла везде, где требуется параметрBindingFlags.
Из MSDN член
InvokeMethod:Указывает, что должен быть вызван метод. Это не должен быть конструктор или инициализатор типа.
Он используется
InvokeMemberметод.
Comments