0

この方法にたどり着きました

protected internal virtual IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        if (controllerType == null)
        {
            throw new HttpException(404,
                                    String.Format(
                                        CultureInfo.CurrentCulture,
                                        MvcResources.DefaultControllerFactory_NoControllerFound,
                                        requestContext.HttpContext.Request.Path));
        }
        if (!typeof(IController).IsAssignableFrom(controllerType))
        {
            throw new ArgumentException(
                String.Format(
                    CultureInfo.CurrentCulture,
                    MvcResources.DefaultControllerFactory_TypeDoesNotSubclassControllerBase,
                    controllerType),
                "controllerType");
        }
        return ControllerActivator.Create(requestContext, controllerType);
    }

requestContext パラメータは使用されていないように見えるので、何のためにあるのか疑問に思っています。ControllerActivator.Create に渡されますが、そこでも実際に使用されることはありません。

public IController Create(RequestContext requestContext, Type controllerType)
        {
            try
            {
                return (IController)(_resolverThunk().GetService(controllerType) ?? Activator.CreateInstance(controllerType));
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException(
                    String.Format(
                        CultureInfo.CurrentCulture,
                        MvcResources.DefaultControllerFactory_ErrorCreatingController,
                        controllerType),
                    ex);
            }
        }
4

1 に答える 1