public static object RunAction <TService, TRequest>( this TService service, TRequest request, Func <TService, TRequest, object> invokeAction, IRequest requestContext = null) where TService : IService { var actionCtx = new ActionContext { RequestFilters = new IHasRequestFilter[0], ResponseFilters = new IHasResponseFilter[0], ServiceType = typeof(TService), RequestType = typeof(TRequest), ServiceAction = (instance, req) => invokeAction(service, request) }; requestContext = requestContext ?? new MockHttpRequest(); ServiceController.InjectRequestContext(service, requestContext); var runner = HostContext.CreateServiceRunner <TRequest>(actionCtx); var response = runner.Execute(requestContext, service, request); return(response); }