Ход вы добавляете некоторый класс на основе значения хоста запроса? Я установил Ninject MVC3 lib через Nuget. Я ищу что-то вроде этого:ASP.NET MVC3 Ninject условный ввод
private static void RegisterServices(IKernel kernel)
{
var host = get host from request;
if (host.StartstWith("x."))
{
kernel.Bind<IMyInterface>().To<XImplementation>().InRequestScope();
}
else if (host.StartstWith("y."))
{
kernel.Bind<IMyInterface>().To<YImplementation>().InRequestScope();
}
}
Edit: только что this answer .. есть ли другой способ, чем завод? Как и в моем примере «псевдо» выше?
Решение:
private static void RegisterServices(IKernel kernel)
{
var host = HttpContext.Current.Request.Headers["host"].ToLower();
kernel.Bind<IMyInterface>().To<XImplementation>().When(ctx => host.StartsWith("x.")).InRequestScope();
kernel.Bind<IMyInterface>().To<YImplementation>().When(ctx => host.StartsWith("y.")).InRequestScope();
}
Ни в коем случае не должны вы регистрации каждого запроса. Search Mark Seemann RRR pattern –
Вы можете использовать ToMethod, ToProvider или построить собственную фабрику, если условные конструкции недостаточны. В общем, условный подход должен быть вашим первым портом захода - см. Ответ @Simon Halsey –
@RubenBartelink, если я удалю .InRequestScope(), что еще не так с использованием To в сочетании с Когда, как в моем примере? Использует ли завод лучшую сыворотку? Если это так? – redman