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