В чем DLL является Связывание (T) от Ninject, расположенного

Я использую.Net 3.5 и консольное приложение, которое в конечном счете станет сервисом окон.

Большинство примеров я нахожу использование чем-то как

Bind<IWeapon>().To<Sword>();

Я включал весь DLL как ссылки в моем проекте и мне, компилятор все еще жалуется. Какие-либо подсказки того, где я иду не так, как надо? Извините это могло бы быть глупым вопросом.

ОБНОВЛЕНИЕ: Просто заметьте много других библиотек, которые, кажется, необходимы, но не ссылаются. Существуют библиотеки как замок Core. Они должны быть включены?

5
задан uriDium 23 February 2010 в 14:33
поделиться

2 ответа

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

Например:

public class ApplicationModule : NinjectModule {

  public override void Load() {

    Bind<IWeapon>().To<Sword>(); 

    // additional bindings continue ...
  }
}

Класс NinjectModule наследует классы и интерфейсы, которые определяют синтаксис свободного связывания Ninject, что делает метод Bind () доступным в рамках класса. Затем эти модули передаются ядру 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.

Надеюсь, это поможет.

7
ответ дан 14 December 2019 в 08:49
поделиться

Попробуйте войти в свойства своего проекта (щелкните правой кнопкой мыши проект и щелкните свойства) и перенаправьте консольное приложение на .Net Framework 3.5, в настоящее время он может говорить что-то вроде «Профиль клиента .Net Framework 3.5». У меня была такая же проблема в прошлом, когда сборки не ссылались должным образом.

Надеюсь, что это проблема, и это поможет.

0
ответ дан 14 December 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: