我是C#的新手,所以这可能是我不理解某些基本功能或错过语言的某些功能。我在网上搜索过,但我似乎找到的所有例子都包含在一个类中(换句话说,它们定义了事件以及触发事件时执行的方法),这不是我想要的。 / p>
对于我的场景,我想定义一个侦听器方法的接口,它可以接受一些提供指令的自定义参数(这可能是我自己的EventArgs吗?)。让我们假装它的车,所以我有方法名称:
然后我希望能够创建提供这些方法的实际实现的类。
与所有这些完全分开,我有一个基于外部进程定期执行的类,我希望它负责触发这些事件(当汽车启动和加速等)。
这是我努力工作的基础,但到目前为止还没有运气。还有一个后续问题。如果我的监听器实现类需要维持给定调用的任何类型的状态,那么最好如何做到这一点(例如,当调用Accelerate时,它希望能够将它加速的速度返回给调用者的调用者。事件 - 例如80公里/小时)
希望你能提供帮助,非常感谢
答案 0 :(得分:0)
这是c#中的事件/侦听器的简单示例:
//your custom parameters class
public class MyCustomParameters
{
//whatever you want here...
}
//the event trigger
public class EventTrigger
{
//declaration of the delegate type
public delegate void AccelerationDelegate(MyCustomParameters parameters);
//declaration of the event
public event AccelerationDelegate Accelerate;
//the method you call to trigger the event
private void OnAccelerate(MyCustomParameters parameters)
{
//actual triggering of the events
if (Accelerate != null)
Accelerate(parameters);
}
}
//the listener
public class Listener
{
public Listener(EventTrigger trigger)
{
//the long way to subscribe to the event (to understand you create a delegate)
trigger.Accelerate += new EventTrigger.AccelerationDelegate(trigger_Accelerate);
//a shorter way to subscribe to the event which is equivalent to the statement above
trigger.Accelerate += trigger_Accelerate;
}
void trigger_Accelerate(MyCustomParameters parameters)
{
//implement event handling here
}
}
我希望它有所帮助。