Как мне передать ссылку на метод Другому методу в C#

StackOverflow https://stackoverflow.com/questions/414741

Вопрос

Я хотел бы передать ссылку на метод в другой метод и сохранить его как переменную.Позже я хотел бы использовать эту ссылку для определения обработчика событий.

При создании обработчика события ссылка на метод передается следующим образом:

myButton.Click += new RoutedEventHandler(myButton_Click);

И если вы посмотрите на конструктор для "RoutedEventHandler" из IntelliSense, это выглядит следующим образом:

RoutedEventHandler(void(object, RoutedEventArgs))

Что я хотел бы сделать, это передать метод "myButton_Click" другому статическому методу, а затем создать там обработчик событий.Как мне передать ссылку на статический метод?Я попробовал следующее, но оно не компилируется:

public class EventBuilder
{
    private static void(object, RoutedEventArgs) _buttonClickHandler;

    public static void EventBuilder(void(object, RoutedEventArgs) buttonClickHandler)
    {
        _buttonClickHandler = buttonClickHandler;
    }

    public static void EnableClickEvent()
    {
        myButton.Click += new RoutedEventHandler(_buttonClickHandler);
    }
}

Спасибо, Бен

Это было полезно?

Решение

Для ссылки на метод Reference (называемый делегировать в .NET), используйте имя обработчика, а не подпись.

public class EventBuilder
{
    private static RoutedEventHandler _buttonClickHandler;

    public EventBuilder(RoutedEventHandler buttonClickHandler)
    {
        _buttonClickHandler = buttonClickHandler;
    }

    public static void EnableClickEvent()
    {
        myButton.Click += new RoutedEventHandler(_buttonClickHandler);
    }
}

Другие советы

попробуй

private static delegate void(object sender, RoutedEventArgs e) _buttonClickHandler;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top