using System; using Microsoft.AspNet.DependencyInjection; namespace Microsoft.AspNet.Mvc { public class ReflectedActionInvokerProvider : IActionInvokerProvider { private readonly IActionResultFactory _actionResultFactory; private readonly IServiceProvider _serviceProvider; private readonly IControllerFactory _controllerFactory; private readonly IActionBindingContextProvider _bindingProvider; private readonly INestedProviderManager _filterProvider; public ReflectedActionInvokerProvider(IActionResultFactory actionResultFactory, IControllerFactory controllerFactory, IActionBindingContextProvider bindingProvider, INestedProviderManager filterProvider, IServiceProvider serviceProvider) { _actionResultFactory = actionResultFactory; _controllerFactory = controllerFactory; _bindingProvider = bindingProvider; _filterProvider = filterProvider; _serviceProvider = serviceProvider; } public int Order { get { return 0; } } public void Invoke(ActionInvokerProviderContext context, Action callNext) { var actionDescriptor = context.ActionContext.ActionDescriptor as ReflectedActionDescriptor; if (actionDescriptor != null) { context.Result = new ReflectedActionInvoker( context.ActionContext, actionDescriptor, _actionResultFactory, _controllerFactory, _bindingProvider, _filterProvider); } callNext(); } } }