Как добавить новый объект для отслеживания в Ninject после Application_Started? - PullRequest
1 голос
/ 05 сентября 2010

Можно ли добавить новый объект, за который Ninject должен отвечать (время жизни, внедрение и т. Д.), В приложении ASP.NET после возникновения события Application_Started?

Мое приложение должно динамически определять объекты, которые должны хорошо отслеживаться после запуска приложения

Ответы [ 2 ]

1 голос
/ 05 сентября 2010

Если у вас есть доступ к объекту Kernel, созданному на Application_Start либо с помощью статической ссылки, либо [предпочтительно] с помощью Common Service Locator , вы сможете вызвать Bind<T>() на объекте для обновления контекста.

Я лично не пробовал это, но это соответствует структуре класса.

0 голосов
/ 10 сентября 2010

(часть этого относится к другому ответу больше, чем к вашему вопросу, но надеюсь, что это поможет в целом). Вы действительно не вызываете Bind<T>() для экземпляров объекта, вы делаете это для регистрации привязок, которые затем используются в любом решении новых экземпляров.с помощью Kernel.Get<T>() или с помощью Kernel.Inject(@object) для внедрения [обычно только свойств (поскольку вы не создаете)] в объект, не созданный под управлением Ninject.

В то время как Inject объекты ed будут активированыи т. д., их область видимости и т. д. не всегда работает одинаково.Возможно, вы можете уточнить, какие именно конкретные услуги, которые вы ожидаете получить, помимо уточнения свойств, уточните?(См. кэш и сбор опуса для получения подробной информации об управлении временем жизни)

...