Exemplo n.º 1
0
        private void OnReceivedArgument(ValidEventArgs arg)
        {
            var temp = _args.ToArray();

            foreach (var t in temp)
            {
                t.Apply(_args, arg);
            }
        }
Exemplo n.º 2
0
        /// <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);