Я слежу за книгой Стивена Сандерсона Pro MVC2 и у меня есть вопрос об использовании Ninject.
В примере со спортивным магазином мы имеем в Global.asax.cs
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
и NinjectControllerFactory
определяется как:
public class NinjectControllerFactory : DefaultControllerFactory
{
//A Ninject "kernet" is the thing that can supply object instances
private IKernel kernel = new StandardKernel(new SportsStoreServices());
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
return (IController)kernel.Get(controllerType);
}
private class SportsStoreServices : NinjectModule
{
public string QString = null;
public override void Load()
{
Bind<IProductsRepository>().To<SqlProductsRepository>()
.WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString);
}
}
}
Как видите, SqlProductsRepository
берет строку подключения из файла конфигурации.Если мне нужно принять решение на основе параметров строки запроса URL, например, если param1 = true, я хочу загрузить данные из одного хранилища в сравнении с другим, как я могу это сделать?Я пытался увидеть, как получить доступ к параметрам запроса в методе Load()
, но я не могу найти заранее заполненное место для этого.
Также Load()
является правильным местом для принятия решения на основе параметров запросаили я должен как-то принять это решение в контроллере?