在Ninject中查找抽象类绑定的类

时间:2010-08-22 19:49:31

标签: c# unit-testing asp.net-mvc-2 inversion-of-control ninject

在以下示例中,如何使用Ninject找到当前绑定到抽象类的类:

if(conditional)
  Bind<IProducts>().To<Products>();
else
  Bind<IProducts>().To<SqlProducts>();
Type currentType = 'Type based upon current binding of IProducts'

如何获取 currentType 的值。

2 个答案:

答案 0 :(得分:2)

Kernel.Resolve是您寻求的解析机制的低级入口点 - 它不会实例化对象。

我建议下载包含测试的主干,然后您将获得涵盖您的确切方案的示例。不要将此视为一次性的通知 - 测试是适当的清洁xUnit.net测试,这些测试在短小,专注和良好的覆盖范围方面具有示范性。

您可能还会发现Kernel.Get<T>().GetType() / Kernel.TryGet<T>().GetType()Kernel.GetAll<T>有用,具体取决于您的具体情况 - 如果您可以进行扩展,我可以更具体地回答此问题(但是所有这些实例化对象而不是让你以低级别查询绑定。

答案 1 :(得分:1)

kernel.Get<IProducts>().GetType() 

在运行时给了我正确的类型。