Запрашиваемая ядро ​​создать экземпляр зависимости одноэлементной области при загрузке модуля - PullRequest
1 голос
/ 19 марта 2012

В моем приложении ASP.NET MVC 3 используется контейнер Ninject IoC.Один из контроллеров зависит от поставщика данных, который должен запускать кеширование потенциально необходимого содержимого при запуске веб-сайта, а не при создании контроллера по запросу и необходимости данных.

Итак, для этого янужно попросить Ninject создать экземпляр единой области моей зависимости, который будет обрабатывать запросы при запуске сайта.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Я бы просто выполнил любую операцию в global.asax над приложением, которое переопределяет, что обеспечивает NinjectHttpApplication. Если вы используете обычный HttpApplicaiton (без переопределения NinjectHttpApplication) в вашем global.asax, просто используйте обычное событие HttpApplication_Start, чтобы выполнить инициализацию кэша. Прикосновение к контейнеру IoC в этом контексте допустимо, так как это составной корень вашего приложения. Так что я думаю что-то вроде:

Bind<IProvider>().To<CacheProvider>().InSingletonScope(); //<in binding module

Kernel.Get<IProvider>().SetupCache() //<in global.asax

Я действительно не вижу необходимости, чтобы это было более сложным, чем это ... Хотя я могу ошибаться.

Если вы можете предоставить более подробную информацию о провайдере, я могу дать более конкретное предложение.

0 голосов
/ 19 марта 2012

Вы захотите добавить .InSingletonScope() к вашему отображению внутри вашего ядра.Таким образом, он всегда будет использовать один и тот же объект.Как только объект необходим, Ninject загрузит его и после этого всегда будет использовать один и тот же объект.

...