想象一下,我有以下类型
public interface IFoo{}
public class Foo1 : IFoo{}
public class Foo2 : IFoo{}
与Ninject绑定为
Bind<Foo1>().ToSelf();
Bind<Foo2>().ToSelf();
有没有办法从内核中获取IFoo的所有实例?调用kernel.GetAll<IFoo>()
会返回一个空结果。我无法将IFoo绑定到Foo等
修改 我很高兴能够获得所有绑定,并通过反射手动检查它们,但看不到任何明显的
答案 0 :(得分:0)
是的,你可以。
请阅读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();
}