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); }
/// <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); } }