namespace GFramework.Core.Abstractions.Events;
///
/// 事件总线接口,提供事件的发送、注册和注销功能
///
public interface IEventBus
{
///
/// 发送事件,自动创建事件实例
///
/// 事件类型,必须具有无参构造函数
void Send() where T : new();
///
/// 发送指定的事件实例
///
/// 事件类型
/// 事件实例
void Send(T e);
///
/// 发送指定的事件实例,并指定传播模式
///
/// 事件类型
/// 事件实例
/// 事件传播模式
void Send(T e, EventPropagation propagation);
///
/// 注册事件监听器
///
/// 事件类型
/// 事件处理回调函数
/// 反注册接口,用于注销事件监听
IUnRegister Register(Action onEvent);
///
/// 注册事件监听器,并指定优先级
///
/// 事件类型
/// 事件处理回调函数
/// 优先级,数值越大优先级越高
/// 反注册接口,用于注销事件监听
IUnRegister Register(Action onEvent, int priority);
///
/// 注销事件监听器
///
/// 事件类型
/// 要注销的事件处理回调函数
void UnRegister(Action onEvent);
}