Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }