Отключить неявное связывание / внедрение неявно связанных классов в Ninject 2+
Если вы запрашиваете несвязанный объект из NInject, то поведение по умолчанию (при наличии подходящего конструктора), по-видимому, заключается в создании экземпляра соответствующего объекта.
Я хотел бы отключить это поведение (у меня была проблема с отладкой, потому что что-то было привязано автоматически вместо того, чтобы подхватить мою пользовательскую привязку в модуле). Этот вопрос намекает на то, что это возможно, но я не могу найти ответ в вики NInject.
2 ответа
Удалить SelfBindingResolver
из компонентов ядра после создания:
kernel.Components.RemoveAll<IMissingBindingResolver>();
kernel.Components.Add<IMissingBindingResolver, DefaultValueBindingResolver>();
Следующее является лучшим, более прямым способом удаления SelfBindingResolver
, не предполагая, что DefaultValueBindingResolver
единственный другой IMissingBindingResolver
составная часть:
kernel.Components.Remove<IMissingBindingResolver, SelfBindingResolver>();
Возможно Remove<T, TImplementation>()
Метод был добавлен только в последней версии Ninject, но это работает для меня, используя Ninject 3.2.2.0.