当前位置: 首页 > 文档资料 > CatLib 中文文档 >

事件系统

优质
小牛编辑
146浏览
2023-12-01

事件机制是一种很好的应用解耦方式。CatLib事件系统让我们可以订阅和监听程序中出现的各种事件。

应用程序已经默认提供了事件系统,供给全局事件使用。如果您要定义私有范围的事件可以这么做:

var dispatcher = new EventDispatcher();

名词定义

  • 载荷是指程序调用所附带的上下文信息。不同的调用者所提供的上下文信息各不相同。

注册普通监听器

通过 AddListener 命令您可以注册一个事件的监听器。

dispatcher.AddListener("event.name", (EventArgs args) =>
{
    //todo
});

触发事件

如果要触发事件,您可以通过Raise来触发事件。这个函数将会把事件分发到它所有已经注册的监听器上。

dispatcher.Raise("event.name", userParams);

判断监听器是否存在

您可以通过HasListener来判断事件监听器是否存在。

dispatcher.HasListener("event.name");

终止事件传递

CatLib事件系统支持实现一个IStoppableEvent接口来决定是否来终止事件的传递。

public class FooEventArgs : EventArgs, IStoppableEvent
{
    public bool IsPropagationStopped => true;
}

解除事件监听

您可以通过RemoveListener方法来解除指定的事件监听器。

dispatcher.RemoveListener("event.name", listener);

解除事件下全部监听器

dispatcher.RemoveListener("event.name");