В Ninject V1 ImplicitSelfBinding был параметром конфигурации верхнего уровня (по умолчанию - true IIRC).
В V2 неявное поведение самосвязывания, которое вы наблюдаете, более тесно связано (хотя есть способыотключив его - как и большинство битов Ninject, это очень детально и минимально).В V2 поведение по умолчанию состоит в том, что самосвязывания для конкретных типов всегда генерируются, если нет других привязок.Единственный раз, когда вы обычно делаете Bind<Concrete>().ToSelf()
, это настраиваете привязку, например, для .InSingletonScope()
.
См. Этот ответ @Remo Gloor , чтобы узнать, как это сделать.отключить в V2 +.
Пойдите, сделайте grep в источнике прямо сейчас для ImplicitSelfBinding в этот момент - это намного проще для чтения, чем люди, клевещущие на все же!
Также не забудьте взглянуть на Ninject.Extensions.Conventions
и тесты на ninject.org для организации неявного Bind()
преобразования I*X*
в *X*
(Как упоминал Стивен, Ninject не будет самостоятельно связываться, если вы изменили свой класс MyClass
наabstract
.) * * тысяча двадцать-одна