private void OnReceivedArgument(ValidEventArgs arg) { var temp = _args.ToArray(); foreach (var t in temp) { t.Apply(_args, arg); } }
/// <summary> /// 触发事件 /// </summary> /// <param name="context"></param> /// <param name="module"></param> public void Raise(ValidEventArgs arg) { lock (_syncObject) { OnReceivedArgument(arg); //收到新参数 //执行已经注册的处理器的方法 foreach (var handle in _handles) { ActionPipeline.Default.Queue(() => { handle(this, arg); }); } if (arg.IsHistoric) { //具有历史性,保留参数 _args.Add(arg); } } }
///// <summary> ///// 当前参数是否与<paramref name="target"/>重叠, ///// 相互重叠的参数不一定每个属性都相同,但是蕴含的意义都是指向的同一个对象 ///// </summary> ///// <param name="target"></param> ///// <returns></returns> //public abstract bool IsOverlap(ValidEventArgs target); /// <summary> /// 应用一个新参数 /// </summary> public abstract void Apply(IList <ValidEventArgs> args, ValidEventArgs newArg);