/// <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();
        }
Example #2
0
 public IMessageHandlerWithResponseConstruction <TMessage, TResponse> RegisterNext(IMessageHandlerWithResponseConstruction <TMessage, TResponse> handlerNext)
 {
     _nextHandler = handlerNext;
     return(handlerNext);
 }