如何轻松判断Ninject是否可以解析课程

时间:2010-11-12 22:50:06

标签: c# ioc-container ninject

我正在将Ninject引入现有项目的大量混乱中。我想写一个诊断测试,以确保Ninject最终创建的所有类实际上可以由Ninject解决...而不实际创建任何类。

我想避免实际构造的原因是这些类中的许多类都倾向于在其构造函数中启动数据库操作(叹息是的,我知道)。否则,我只需使用try / catch

Get<T>中运行它们

2 个答案:

答案 0 :(得分:4)

CanResolve上有一个IResolutionRoot个扩展名(例如,如果您拥有正确的Kernel,则可以将其用于using。您可以使用CreateRequest来创建请求。如果您需要示例或更深入的信息,请查看来源和测试。

答案 1 :(得分:1)

我知道这是一个旧帖子,但它是我在搜索如何查找Ninject是否可以解析类而不实际调用get()并冒着异常时发现的第一个帖子。

Ninject版本3.0.2有一个方法CanResolve,它返回一个布尔值:

kernel.CanResolve<T>()

我从nuget获得了3.0.2,但目前市场不稳定(Ninject.3.0.2-unstable-9037)所以我不确定我是否在生产中使用它。