在以下示例中,如何使用Ninject找到当前绑定到抽象类的类:
if(conditional)
Bind<IProducts>().To<Products>();
else
Bind<IProducts>().To<SqlProducts>();
Type currentType = 'Type based upon current binding of IProducts'
如何获取 currentType 的值。
答案 0 :(得分:2)
Kernel.Resolve
是您寻求的解析机制的低级入口点 - 它不会实例化对象。
我建议下载包含测试的主干,然后您将获得涵盖您的确切方案的示例。不要将此视为一次性的通知 - 测试是适当的清洁xUnit.net测试,这些测试在短小,专注和良好的覆盖范围方面具有示范性。
您可能还会发现Kernel.Get<T>().GetType()
/ Kernel.TryGet<T>().GetType()
或Kernel.GetAll<T>
有用,具体取决于您的具体情况 - 如果您可以进行扩展,我可以更具体地回答此问题(但是所有这些实例化对象而不是让你以低级别查询绑定。
答案 1 :(得分:1)
kernel.Get<IProducts>().GetType()
在运行时给了我正确的类型。