Как вы вводите какой-то класс, основанный на значении запроса?Я установил Ninject MVC3 lib через Nuget.Я ищу что-то вроде этого:
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();
}
}
Редактировать: только что нашел этот ответ .. Есть ли другой способ, кроме завода?Как в моем примере «псевдо» выше?
Решение:
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();
}