Первое, что вам нужно, чтобы убедиться, что вы это делаете, - это выполнить код привязки внутри модуля Ninject внутри метода Load, который вы переопределите.
Например:
public class ApplicationModule : NinjectModule {
public override void Load() {
Bind<IWeapon>().To<Sword>();
// additional bindings continue ...
}
}
Класс NinjectModule наследует классы и интерфейсы, которые определяют синтаксис связывания свободно Ninject таким образом делая способ Bind<T>()
доступен в пределах класса. Эти модули затем передаются ядру Ninject, когда ядро инстанциируется:
var kernel = new StandardKernel(new ApplicationModule());
Load()
метод каждого модуля передается ядру будет называться и определения связывания содержится в способах, выполненных.
В приведенном выше примере указан NinjectModule как базовый класс; однако это относится к версии 2.0 Ninject. Если вы используете Ninject 1.x, ваш базовый класс будет StandardModule
. В любом случае метод загрузки переопределяется, и там выдаются обязательные инструкции (которые аналогичны в обеих версиях).
Для дальнейшего ответа на ваш вопрос:
Для Ninject 1.x, необходимая DLL является ninject.core.dll и пространство имен, которое StandardModule определяется в это Ninject.Core.
Для Ninhect 2.0 требуемой DLL является ninject.dll, а пространство имен, в котором задан NinjectModule, является Ninject.Modules.
В обеих случаях вам может понадобиться ссылаться более пространствами имен в зависимости от того, насколько сложен ваши обязательных заявлений получить - то есть, если вы используете контекстные привязки или объем привязки и т.д. В случае Ninject 1.x, вам также может потребоваться ссылка на Ninject.Conditions.dll для этих более сложных случаев.
Вам не нужно ссылаться на Castle.Core, если вы не используете функцию перехвата Ninject, которая является основной базой 1.x, но расширение в версии 2.0.
Надеюсь, это поможет.
Спасибо. Я могу только поднять вас один раз и выбрать это как правильный ответ, я бы хотел сделать больше. Я боролся весь день. Есть документация о том, как все висит вместе, но я изо всех сил пытался найти что-то для своего сценария. Другие учебные пособия по запуску все, казалось, отсутствовали, когда я пошел к результату поиска. – uriDium
Эй, нет проблем! Я случайно использовал Ninject и долго боролся, когда сравнивал все контейнеры IoC. Рад, что смог помочь. –