Отключить неявное связывание / внедрение неявно связанных классов в 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.

Другие вопросы по тегам