Пример #1
0
        protected virtual IResponsibility <TResponsibilityContext> Compose()
        {
            if (!this.Responsibilities.Any())
            {
                throw new SAEException($" not register '{typeof(TResponsibilityContext).Name}' class IResponsibility");
            }

            var first = this.Responsibilities.First();
            AbstractResponsibility <TResponsibilityContext> responsibility;

            if (first is AbstractResponsibility <TResponsibilityContext> )
            {
                responsibility = (AbstractResponsibility <TResponsibilityContext>)first;
            }
            else
            {
                responsibility = new ProxyResponsibility <TResponsibilityContext>(first);
            }

            if (this.Responsibilities.Count() > 1)
            {
                for (int i = 1; i < this.Responsibilities.Count(); i++)
                {
                    responsibility.Add(this.Responsibilities.ElementAt(i));
                }
            }

            return(responsibility);
        }
Пример #2
0
        /// <summary>
        /// 添加一个新的<paramref name="responsibility"/>链条进来
        /// </summary>
        /// <param name="responsibility"></param>
        public virtual void Add(IResponsibility <TContext> responsibility)
        {
            if (responsibility == null)
            {
                return;
            }

            var proxy = responsibility as ProxyResponsibility <TContext>;

            if (proxy == null)
            {
                proxy = new ProxyResponsibility <TContext>(responsibility);
            }

            if (this.Responsibility == null)
            {
                this.Responsibility = proxy;
            }
            else
            {
                ((ProxyResponsibility <TContext>) this.Responsibility).Add(proxy);
            }
        }