Вы можете сделать это, создав новую фабрику контроллеров, которую запрашивает IDependancyResolver
/// <summary>
/// <para>Controller Factory</para>
/// </summary>
public class MyControllerFactory : DefaultControllerFactory {
/// <summary>
/// <para>Get instance of the controller</para>
/// </summary>
protected override IController GetControllerInstance(
RequestContext requestContext, Type controllerType) {
var controller = base.GetControllerInstance(requestContext, controllerType);
if (controller != null
&& typeof(Controller).IsAssignableFrom(controller.GetType())) {
// ITempDataProvider
var tempDataProvider = DependencyResolver.Current
.GetService<ITempDataProvider>();
if (tempDataProvider != null)
((Controller) controller).TempDataProvider = tempDataProvider;
}
return controller;
}
}
Затем в своем средстве определения зависимостей установите его для поиска IControllerFactory и верните свой ITempDataProvider
пример для объекта:
_kernel.Bind<IControllerFactory>()
.To<MyControllerFactory>().InSingletonScope();
_kernel.Bind<ITempDataProvider>()
.ToMethod(c => new CookieTempDataProvider(HttpContext.Current))
.InRequestScope();