Когда срабатывает OnActivation Ninject? - PullRequest
5 голосов
/ 29 сентября 2011

Я уверен, что это глупый вопрос, так как я предполагаю, что ответ «Когда объект создается Ninject» ... но я хочу перепроверить ...

Чтобы дать немногобольше контекста относительно того, почему я задаю вопрос, у меня есть приложение asp mvc, которое реализует NinjectHttpApplication.Однако в рамках переопределения OnApplicationStarted мне нужно активировать метод на одноэлементном экземпляре, который связан с Ninject.

Проблема в том, что ядро ​​выставлено, но не должно использоваться в качестве локатора службы, поэтому я мог получитьобъект возвращается из этого и вызывает DoSomeSetup ();метод, но это кажется неудачей.Насколько мне известно, экземпляр NinjectHttpApplication не DI'd, так как файл Global.asax использует его напрямую, поэтому я не мог DI это в приложение таким образом.

Это оставляет меня с одним другим вариантом, который будет добавлятьOnActivation (х => x.DoSomeSetup ());вызвать привязку, однако этот объект используется только в определенных местах, поэтому он не похож на первый раз, когда вы загружаете страницу, это будет требоваться контроллером, поэтому, если OnActivation ожидает создания первого экземпляра, это может не произойти длянекоторое время.

Надеюсь, это не слишком смущает:)

1 Ответ

2 голосов
/ 29 сентября 2011

Да, ваше предположение верно (или, по крайней мере, в основном правильно).Действия активации запускаются при первом разрешении экземпляра, даже если он не создан Ninject (например, Constants)

Для HttpApplication вы можете использовать внедрение свойства между прочим.

...