如何使NInject遵循类型层次结构?

时间:2015-06-15 21:40:09

标签: c# ninject

我很惊讶NInject在查找绑定时不遵循类型层次结构。

Bind<ICollection<ICard>>().ToConstructor(/* .. */);
var Cards = IoC.Kernel.Get<IList<ICard>>();

在上面的代码中,Kernel.Get<..>()向我发送了ActivationException,因为我没有明确地绑定IList<ICard>。换句话说,对于NInject,IList<ICard>不是ICollection<ICard>。听起来很奇怪。

当然我可以通过明确添加Bind<IList<ICard>>().To<..>()来删除错误,但我不明白为什么NInject默认情况下不遵循类型层次结构。我错过了什么吗?

所以,有人可以解释一下:

  • 为什么NInject迫使我在我的绑定中成为特定的
  • 如何在不为每个可能的集合添加繁琐的绑定列表的情况下克服此行为(除非您说服这样做是非常糟糕的做法)

0 个答案:

没有答案