Зарегистрировать зависимость для запроса - PullRequest
2 голосов
/ 24 июля 2011

Ранее я регистрировал зависимости в контейнере IoC при запуске приложения, настраивая фабрику контроллера.Но теперь мне нужно зарегистрировать некоторые зависимости для каждого запроса.Есть ли способы сделать это в ASP.NET MVC 3?

1 Ответ

3 голосов
/ 24 июля 2011

Как правило, даже каждый базовый контейнер IoC так или иначе поддерживает управление жизненным циклом объекта.

Мой любимый контейнер - Ninject 2.0 , который, похоже, плохо интегрируется с ASP.NET MVC 3. Он доступен в виде пакета NuGet под названием Ninject.MVC3.

.

В методе RegisterServices(IKernel) вы можете определить область действия для каждого типа для разрешения. Следующий код настраивает Ninject для возврата одного и того же экземпляра SomeImplementation при разрешении ISomeInterface:

/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<ISomeInterface>().To<SomeImplementation>().InRequestScope();
}

Ninject позволяет выбрать одну из следующих доступных областей:

  • InRequestScope()
  • InThreadScope()
  • InSingletonScope()
  • InTransientScope()

Нейт Кохари написал сообщение в блоге на эту тему под названием Управление жизненным циклом кэша и сбора данных в Ninject 2.0 - вы определенно захотите это проверить!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...