namespace GFramework.framework.events;
///
/// 泛型事件类,支持一个泛型参数 T 的事件注册、注销与触发。
/// 实现了 IEasyEvent 接口以提供统一的事件操作接口。
///
/// 事件回调函数的第一个参数类型。
public class EasyEvent : IEasyEvent
{
///
/// 存储已注册的事件处理委托。
/// 默认为空操作(no-op)委托,避免 null 检查。
///
private Action _mOnEvent = e => { };
///
/// 注册一个事件监听器,并返回可用于取消注册的对象。
///
/// 要注册的事件处理方法。
/// IUnRegister 对象,用于稍后注销该事件监听器。
public IUnRegister Register(Action onEvent)
{
_mOnEvent += onEvent;
return new DefaultUnRegister(() => { UnRegister(onEvent); });
}
///
/// 取消指定的事件监听器。
///
/// 需要被注销的事件处理方法。
public void UnRegister(Action onEvent) => _mOnEvent -= onEvent;
///
/// 触发所有已注册的事件处理程序,并传递参数 t。
///
/// 传递给事件处理程序的参数。
public void Trigger(T t) => _mOnEvent?.Invoke(t);
///
/// 显式实现 IEasyEvent 接口中的 Register 方法。
/// 允许使用无参 Action 来订阅当前带参事件。
///
/// 无参事件处理方法。
/// IUnRegister 对象,用于稍后注销该事件监听器。
IUnRegister IEasyEvent.Register(Action onEvent)
{
return Register(Action);
void Action(T _) => onEvent();
}
}
///
/// 支持两个泛型参数 T 和 TK 的事件类。
/// 提供事件注册、注销和触发功能。
///
/// 第一个参数类型。
/// 第二个参数类型。
public class EasyEvent : IEasyEvent
{
///
/// 存储已注册的双参数事件处理委托。
/// 默认为空操作(no-op)委托。
///
private Action _mOnEvent = (_, _) => { };
///
/// 注册一个接受两个参数的事件监听器,并返回可用于取消注册的对象。
///
/// 要注册的事件处理方法。
/// IUnRegister 对象,用于稍后注销该事件监听器。
public IUnRegister Register(Action onEvent)
{
_mOnEvent += onEvent;
return new DefaultUnRegister(() => { UnRegister(onEvent); });
}
///
/// 取消指定的双参数事件监听器。
///
/// 需要被注销的事件处理方法。
public void UnRegister(Action onEvent) => _mOnEvent -= onEvent;
///
/// 触发所有已注册的事件处理程序,并传递参数 t 和 k。
///
/// 第一个参数。
/// 第二个参数。
public void Trigger(T t, TK k) => _mOnEvent?.Invoke(t, k);
///
/// 显式实现 IEasyEvent 接口中的 Register 方法。
/// 允许使用无参 Action 来订阅当前带参事件。
///
/// 无参事件处理方法。
/// IUnRegister 对象,用于稍后注销该事件监听器。
IUnRegister IEasyEvent.Register(Action onEvent)
{
return Register(Action);
void Action(T _, TK __) => onEvent();
}
}
///
/// 支持三个泛型参数 T、TK 和 TS 的事件类。
/// 提供事件注册、注销和触发功能。
///
/// 第一个参数类型。
/// 第二个参数类型。
/// 第三个参数类型。
public class EasyEvent : IEasyEvent
{
///
/// 存储已注册的三参数事件处理委托。
/// 默认为空操作(no-op)委托。
///
private Action _mOnEvent = (_, _, _) => { };
///
/// 注册一个接受三个参数的事件监听器,并返回可用于取消注册的对象。
///
/// 要注册的事件处理方法。
/// IUnRegister 对象,用于稍后注销该事件监听器。
public IUnRegister Register(Action onEvent)
{
_mOnEvent += onEvent;
return new DefaultUnRegister(() => { UnRegister(onEvent); });
}
///
/// 取消指定的三参数事件监听器。
///
/// 需要被注销的事件处理方法。
public void UnRegister(Action onEvent) => _mOnEvent -= onEvent;
///
/// 触发所有已注册的事件处理程序,并传递参数 t、k 和 s。
///
/// 第一个参数。
/// 第二个参数。
/// 第三个参数。
public void Trigger(T t, TK k, TS s) => _mOnEvent?.Invoke(t, k, s);
///
/// 显式实现 IEasyEvent 接口中的 Register 方法。
/// 允许使用无参 Action 来订阅当前带参事件。
///
/// 无参事件处理方法。
/// IUnRegister 对象,用于稍后注销该事件监听器。
IUnRegister IEasyEvent.Register(Action onEvent)
{
return Register(Action);
void Action(T _, TK __, TS ___) => onEvent();
}
}