Как прокручивать настроенные привязки Ninject StandardKernel для отладки?
В моем модуле привязки Ninject
public class CarModule : NinjectModule
{
public override void Load()
{
Kernel.Bind(scanner => scanner.FromThisAssembly().SelectAllClasses()
.InheritedFrom<ICar>().BindAllInterfaces());
foreach (var binding in kernel.GetBindings(typeof(ICar)))
{
Trace.WriteLine(string.Format("[{0}] Service bound to [{1}]",
binding.Service.Name,
binding.Target.GetType().Name));
}
// Output looks like:
//[ICar] Service bound to [BindingTarget]
//[ICar] Service bound to [BindingTarget]
//[ICar] Service bound to [BindingTarget]
}
}
Мне нужна проверка работоспособности, чтобы увидеть типы, которые я успешно привязал к моим услугам. У меня возникли проблемы с доступом к именам типов связанных типов. Вместо [BindingTarget]
, я хотел бы видеть [Mercedes]
, [Ferrari]
и т.д.
Есть ли хороший и/или общий способ сделать это?
В вашем IocKernel я просто добавлю метод GetAll экземпляров заданного типа T и вызовет его после загрузки вашего модуля:
public static class IocKernel
{
private static StandardKernel _kernel;
public static IEnumerable<T> GetAll<T>()
{
return _kernel.GetAll<T>();
}
public static void Initialize(params INinjectModule[] modules)
{
if (_kernel == null)
{
_kernel = new StandardKernel(modules);
List<ICar> bindingsList= _kernel.GetAll<ICar>().ToList();
foreach(ICar binding in bindingsList)
{
Trace.WriteLine(string.Format("Service bound to [{1}]", binding.GetType().Name)
}
}
}
}