6

我们正在使用 Ninject 3.0 来解析一个类。相当无聊的标准东西:

IKernel kernel = GetKernel(); 
var foo = kernel.Get<IFoo>(); 

然而,在一台特定的机器上,我们在构造... something时遇到了异常。我们知道发生了什么,但它在日志框架(Common.Logging)中,并且该代码在我们的代码库中使用,在所有/大多数构造函数中。

除了将每个构造函数放在 try/catch 中并用类型信息包装异常之外,我没有从 Ninject 获得关于它遇到问题的有用信息。

有什么方法可以让 Ninject 告诉我们它未能创建哪个类?

另一个人问了一个类似的问题,但他们的解决方案没有帮助 - 我们从日志框架而不是 Ninject 获取异常。

4

1 回答 1

-1

这并不是真正的解决方案,但是当我遇到问题时,我会一次手动删除一个构造函数依赖项,直到找到问题依赖项。当我验证没有那个依赖的所有工作时,我就会进入那个具体的实现。我本质上是递归的,从入口点向下遍历每个依赖项,删除每个依赖项,直到识别出未绑定的依赖项。很累,但蛮力还没有让我失望。即使我遇到一个私有构造函数是导致问题的原因,如果没有蛮力,我也永远不会得到它。但更常见的是,它是某处的未绑定类型或条件注入。

于 2014-12-17T15:22:12.973 回答