using GFramework.framework.extensions; namespace GFramework.framework.events; /// /// OrEvent类用于实现事件的或逻辑组合,当任意一个注册的事件触发时,都会触发OrEvent本身 /// public class OrEvent : IUnRegisterList { /// /// 将指定的事件与当前OrEvent进行或逻辑组合 /// /// 要组合的事件对象 /// 返回当前OrEvent实例,支持链式调用 public OrEvent Or(IEasyEvent easyEvent) { easyEvent.Register(Trigger).AddToUnregisterList(this); return this; } private Action _mOnEvent = () => { }; /// /// 注册事件处理函数 /// /// 要注册的事件处理函数 /// 返回一个可取消注册的对象 public IUnRegister Register(Action onEvent) { _mOnEvent += onEvent; return new DefaultUnRegister(() => { UnRegister(onEvent); }); } /// /// 取消注册指定的事件处理函数 /// /// 要取消注册的事件处理函数 public void UnRegister(Action onEvent) { _mOnEvent -= onEvent; this.UnRegisterAll(); } /// /// 触发所有已注册的事件处理函数 /// private void Trigger() => _mOnEvent?.Invoke(); /// /// 获取取消注册列表 /// public List UnregisterList { get; } = new List(); }