如何在 C# 中将方法引用传递给不同的方法
题
我想将一个方法的引用传递给另一个方法并将其存储为变量。稍后,我想使用此引用来定义事件处理程序。
创建事件处理程序时,会传递方法引用,如下所示:
myButton.Click += new RoutedEventHandler(myButton_Click);
如果您查看 intelliSense 中“RoatedEventHandler”的构造函数,它看起来像:
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);
}
}
谢谢,本
解决方案
引用方法引用(称为 代表 在 .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