2010-07-10 6 views
3

Я новичок в ninject, используя ninject 2.0. Мое приложение размещено в asp.net mvc.Ninject Как получить доступ к ядру для создания экземпляров?

Теперь я не знаю, как получить доступ к ядру, созданному в моей библиотеке классов.

Думаю, я должен создать ядро ​​в global.aspx и загрузить в него все модули. Но как я могу сделать его доступным во всем приложении?

protected void Application_Start() 
    { 
     RegisterRoutes(RouteTable.Routes); 

     IKernel kernel = new StandardKernel(new ServiceModule()); 
    } 

Куда ядро ​​должно быть создано выше? и как получить к нему доступ?

ответ

2

Посмотрите on the Ninject Dojo's extensions section для Ninject.Web.Mvc. Это покажет вам шаблон по умолчанию для управления такими вещами (посмотрите на источник).

Вы можете использовать его как есть (большинство людей) или настроить его по своему усмотрению.

Вы также отметили это CSL. Прежде чем вы будете использовать Ninject для местоположения службы, попробуйте найти причину, по которой это считается антипаттерном (расширение, на которое ссылается по умолчанию, не делает Kernel общедоступным с Global - вам нужно будет самостоятельно добавить public (но WCF интеграция с другой стороны делает)

+2

@mamu: Кто-нибудь домой? Это любое использование? Любые последующие действия, ответят ... –

+1

Я заставляю его работать, впрыскивая ядро ​​с расширением mvc, где бы я ни нуждался в этом прямо сейчас. но это выглядит как взломать для ввода ядра, поскольку он так сильно зависит от ninject. Также доступ к глобальному свойству HttpApplication не так убедителен. Что вы используете CSL только для ядра, поэтому я купил там, где я не знаю, я хочу auto inject, я могу получить ядро ​​из CSL и сделать IOC? – mamu

+0

Также я просто говорю о кусках, где я не хочу делать инъекции конструктора. Большая часть реализации - это автоматическая инъекция конструктора, которая прекрасна. – mamu