Найдите, к какому классу относится абстрактный класс в Ninject - PullRequest
2 голосов
/ 22 августа 2010

Как узнать, какой класс в настоящее время связан с абстрактным классом с помощью Ninject, в следующем примере:

if(conditional)
  Bind<IProducts>().To<Products>();
else
  Bind<IProducts>().To<SqlProducts>();
Type currentType = 'Type based upon current binding of IProducts'

Как я могу получить значение currentType .

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Kernel.Resolve - это низкоуровневая точка входа в механизм разрешения, который вы ищете - он не идет так далеко, как создание экземпляров объектов.

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

Вы также можете найти Kernel.Get<T>().GetType() / Kernel.TryGet<T>().GetType() или Kernel.GetAll<T> полезными, в зависимости от вашего точного сценария - если вы можете расширить его, я могу сделать этот ответ более конкретным (однако все эти примеры объект, а не позволяет запрашивать привязки на низком уровне.

1 голос
/ 23 августа 2010
kernel.Get<IProducts>().GetType() 

дал мне правильный тип во время выполнения.

...