Вы должны установить ControllerFactory со своим собственным.
protected void Application_Start()
{
//...
ControllerBuilder.Current.SetControllerFactory(new IoCControllerFactory());
//...
}
IoCControllerFactory должен наследовать от DefaultControllerFactory
public class IoCControllerFactory : DefaultControllerFactory
И переопределить GetControllerInstance
protected override IController GetControllerInstance (RequestContext requestContext, Type controllerType)
{
ObjectTypeUtility.ArgumentIsNull(controllerType, "controllerType", true);
if (!typeof(IController).IsAssignableFrom(controllerType))
throw new ArgumentException(string.Format(
"Type requested is not a controller: {0}",
controllerType.Name),
"controllerType");
IController controller = IoCWorker.Resolve(controllerType)
as IController;
return controller;
}
IoCWorker - это класс с методом Resolve для инъекции, Я являюсьиспользуя Unity, и я не смог дать реализацию IoCWorker - если вам нужно, я могу поделиться -.
Это сработает ctor inject для вашего контроллера.
Удачи.