我有一个定义事件的接口(interface):
interface IEXampleinterface
{
event MyEventHandler MyEvent;
}
在我的 GUI 类中,我调用了一个“处理器”类,它再次调用了一个实现接口(interface)的“解析器”类:
class GUI
{
public DoSomething()
{
Processor processor = new Processor();
processor.MyEvent += new MyEventHandler(processor_myevent);
processor.DoSomething();
}
public processor_myevent(object sender, EventArgs e)
{
...
}
}
处理器类:
class processor
{
IExampleInterface parser;
event MyEventHandler MyEvent;
public void DoSomething()
{
parser = new Parser();
parser.MyEvent += new MyEventHandler(parser_myevent);
parser.DoStuff();
}
public void parser_myevent(object sender, EventArgs e)
{
if(MyEvent != null)
{
MyEvent(sender, e)
}
}
}
解析器类:
class Parser : IExampleinterface
{
event MyEventHandler MyEvent;
public void DoStuff()
{
MyEvent(this, new EventArgs());
}
}
如您所见,“Processor”类只是从“Parser”获取事件并将其转发给 GUI。这完全可行,但我想问的是是否有更优雅的方式来进行这种事件转发。
最佳答案
除了创建新事件并传递事件之外,您还可以直接指向该事件:
public event MyEventHandler MyEvent
{
add
{
parser.MyEvent += value;
}
remove
{
parser.MyEvent -= value;
}
}
我不确定这是否是最漂亮的事情,也许您最好采用更好的设计。但是,在我想出更好的方法之前,这将完成工作 ;)。
关于C#转发接口(interface)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34680009/