Как легко определить, может ли Ninject разрешить класс - PullRequest
5 голосов
/ 13 ноября 2010

Я представляю Ninject в большом беспорядке существующего проекта. Я хочу написать диагностический тест, чтобы убедиться, что все классы, которые создаст Ninject, действительно могут быть решены Ninject ... без создания какого-либо из них.

Причина, по которой я хочу избежать реальной конструкции, заключается в том, что многие из этих классов имеют тенденцию запускать операции базы данных в своих конструкторах ( sigh да, я знаю). В противном случае я бы просто запустил их все через Get<T> с попыткой / уловкой

Ответы [ 2 ]

4 голосов
/ 15 ноября 2010

На IResolutionRoot есть расширение CanResolve (т. Е. Вы можете использовать его против Kernel, если у вас есть право using s на месте).Есть CreateRequest, который вы используете для создания запроса.Посмотрите источники и тесты, если вам нужен пример или какая-либо более глубокая информация.

1 голос
/ 23 октября 2013

Я знаю, что это старая публикация, но она была первой, которую я нашел, когда искал, как найти, может ли класс быть разрешен с помощью Ninject без фактического вызова get () и риска для исключения.

NinjectВ версии 3.0.2 есть метод CanResolve, который возвращает логическое значение:

kernel.CanResolve<T>()

Я получил 3.0.2 от nuget, но в настоящее время он нестабилен на рынке (Ninject.3.0.2-unstable-9037), поэтому я неуверен, если я использую это в производстве только сейчас.

...