public object CreateController(ActionContext actionContext) { var actionDescriptor = actionContext.ActionDescriptor as ControllerActionDescriptor; if (actionDescriptor == null) { throw new ArgumentException( Resources.FormatActionDescriptorMustBeBasedOnControllerAction( typeof(ControllerActionDescriptor)), nameof(actionContext)); } var controller = _typeActivator.CreateInstance( _serviceProvider, actionDescriptor.ControllerTypeInfo.AsType()); _controllerActivator.Activate(controller, actionContext); return(controller); }
public object CreateController(ActionContext actionContext) { var actionDescriptor = actionContext.ActionDescriptor as ReflectedActionDescriptor; if (actionDescriptor == null) { throw new ArgumentException( Resources.FormatDefaultControllerFactory_ActionDescriptorMustBeReflected( typeof(ReflectedActionDescriptor)), "actionContext"); } var controller = _typeActivator.CreateInstance( _serviceProvider, actionDescriptor.ControllerDescriptor.ControllerTypeInfo.AsType()); actionContext.Controller = controller; _controllerActivator.Activate(controller, actionContext); return(controller); }
public object CreateController(ActionContext actionContext) { Type controllerType; var controllerActionDescriptor = actionContext.ActionDescriptor as ControllerActionDescriptor; if (controllerActionDescriptor != null && controllerActionDescriptor.ControllerDescriptor.ControllerTypeInfo.ContainsGenericParameters) { var entityName = actionContext.RouteData.Values["entityName"].ToString(); var genericType = DebbyAdmin.Entities.FirstOrDefault(x => x.Name == entityName) ?? typeof(object); controllerType = typeof(GenericController <>).MakeGenericType(genericType); } else { var actionDescriptor = actionContext.ActionDescriptor as ControllerActionDescriptor; if (actionDescriptor == null) { throw new ArgumentException( string.Format("The action descriptor must be of type '{0}'", typeof(ControllerActionDescriptor)), "actionContext"); } controllerType = actionDescriptor.ControllerDescriptor.ControllerTypeInfo.AsType(); } var controller = _typeActivator.CreateInstance( _serviceProvider, controllerType); _controllerActivator.Activate(controller, actionContext); return(controller); }