Как мне передать ссылку на метод Другому методу в C#
Вопрос
Я хотел бы передать ссылку на метод в другой метод и сохранить его как переменную.Позже я хотел бы использовать эту ссылку для определения обработчика событий.
При создании обработчика события ссылка на метод передается следующим образом:
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;
Не связан с StackOverflow