Jef*_*eff 5 ninject ioc-container autowired
在我的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]
}
}
Run Code Online (Sandbox Code Playgroud)
我需要进行健全性检查以查看我已成功绑定到我的服务的类型.我无法访问绑定类型的类型名称.相反的[BindingTarget],我倒要看看[Mercedes],[Ferrari]等...
有没有好的和/或常见的方法来做到这一点?
在 IocKernel 中,我只需添加一个方法来获取给定类型 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)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |