我想创建一个不附加任何方法的EventHandler。重要的是在运行时而不是在编译时进行。以后我可以添加方法,然后调用事件。
EventHandler eventHandler = new EventHandler(); // Compiler error
if(some_condition)
{
eventHandler += (sender, e) =>
{
Console.WriteLine("some condition is true");
};
}
else
{
eventHandler += (sender, e) =>
{
Console.WriteLine("some condition is false");
};
}
eventHandler?.Invoke(this, EventArgs.Empty);
我只在第一行代码上遇到了问题。它不能让我创建一个新的没有参数的EventHandler。但如果我添加一个emtpy lambda,它就可以。
EventHandler eventHandler = new EventHandler((sender, e) => { });
有一个空的lambda看起来很丑陋,但如果我删除它,我就不能编译程序。我应该如何初始化eventHandler?
没有办法实例化和清空 EventHandler
实例。通常的方法是声明一个 event
在你的类中,像下面这样。
class Example
{
event EventHandler Event;
void AddHandlerAndInvoke(bool condition)
{
if (condition)
{
Event += (s, e) => Console.WriteLine("true");
}
else
{
Event += (s, e) => Console.WriteLine("true");
}
Event?.Invoke(this, EventArgs.Empty);
}
}
这将创建一个 event
比能会叫(由) EventHandler
的实例。