从Ninject中检索更通用的绑定
本文关键字:绑定 Ninject 检索 | 更新日期: 2023-09-27 17:52:42
假设我有以下类型
public interface IFoo{}
public class Foo1 : IFoo{}
public class Foo2 : IFoo{}
绑定到Ninject的
Bind<Foo1>().ToSelf();
Bind<Foo2>().ToSelf();
是否有一种方法,我可以从内核获得IFoo的所有实例?调用kernel.GetAll<IFoo>()
返回一个空结果。我不能将IFoo绑定到Foo等
编辑我很高兴能够获得所有绑定,并通过反射手动检查它们,但看不到任何明显的
可以。
请阅读ninject中多次注射
多注
在你的例子中可能是:
Bind<IFoo>().To<Foo1>();
Bind<IFoo>().To<Foo2>();
Bind<Foo1>().ToSelf();
Bind<Foo2>().ToSelf();
如果你想获得所有绑定的列表,你可以尝试使用这个扩展方法:
public static Type[] GetBindings(this IKernel kernel)
{
return ((Multimap<Type, IBinding>)typeof(KernelBase)
.GetField("bindings", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(kernel)).Select(x => x.Key).ToArray();
}
源