public FilterAttachedRequestHandler(IRequestHandlerCore <TRequest, TResponse> body, IEnumerable <RequestHandlerFilter <TRequest, TResponse> > filters)
        {
            Func <TRequest, TResponse> next = body.Invoke;

            foreach (var f in filters.OrderByDescending(x => x.Order))
            {
                next = new RequestHandlerFilterRunner <TRequest, TResponse>(f, next).GetDelegate();
            }

            this.handler = next;
        }
Beispiel #2
0
        public RequestAllHandler(IEnumerable <IRequestHandlerCore <TRequest, TResponse> > handlers, FilterAttachedRequestHandlerFactory handlerFactory)
        {
            var collection = (handlers as ICollection <IRequestHandlerCore <TRequest, TResponse> >) ?? handlers.ToArray();

            var array = new IRequestHandlerCore <TRequest, TResponse> [collection.Count];
            var i     = 0;

            foreach (var item in collection)
            {
                array[i++] = handlerFactory.CreateRequestHandler(item);
            }

            this.handlers = array;
        }
Beispiel #3
0
 public RequestHandler(IRequestHandlerCore <TRequest, TResponse> handler, FilterAttachedRequestHandlerFactory handlerFactory)
 {
     this.handler = handlerFactory.CreateRequestHandler <TRequest, TResponse>(handler);
 }
        public IRequestHandlerCore <TRequest, TResponse> CreateRequestHandler <TRequest, TResponse>(IRequestHandlerCore <TRequest, TResponse> handler)
        {
            var(globalLength, globalFilters)   = options.GetGlobalRequestHandlerFilters(provider, typeof(TRequest), typeof(TResponse));
            var(handlerLength, handlerFilters) = filterProvider.GetAttributeFilters(handler.GetType(), provider);

            if (globalLength != 0 || handlerLength != 0)
            {
                handler = new FilterAttachedRequestHandler <TRequest, TResponse>(handler, globalFilters.Concat(handlerFilters).Cast <RequestHandlerFilter <TRequest, TResponse> >());
            }

            return(handler);
        }