/// <summary> /// Ctor. /// </summary> /// <param name="handlers">Handlers to construct chain of responsibility.</param> protected ChainOfResponsibilityBase(IEnumerable <IMessageHandlerWithResponseConstruction <TMessage, TResponse> > handlers) { if (handlers == null) { throw new ArgumentNullException(nameof(handlers)); } if (!handlers.Any()) { throw new ArgumentException("There has to be at least one handler."); } var orderedHandlers = OrderHandlers(handlers); RegisterHandlers(orderedHandlers); FirstChainHandler = orderedHandlers.First(); }
public IMessageHandlerWithResponseConstruction <TMessage, TResponse> RegisterNext(IMessageHandlerWithResponseConstruction <TMessage, TResponse> handlerNext) { _nextHandler = handlerNext; return(handlerNext); }