我在.NET 3.5 Compact Framework上使用Ninject 3。
我有一个应用程序,它使用InSingletonScope()
绑定的各种内容。
出于调试目的,我需要知道哪些单例实际已被激活...已经请求和解析了哪些绑定,以及实际上是哪些单例实例。
我找不到获取当前活动单例绑定列表的方法。我也找不到一种方法来获取完整的绑定列表来迭代它们。
我确实看到一篇帖子提到我应该能够调用kernel.Get<ICache>
来获取保存实例的缓存对象,但是这个调用给了我一个激活异常,说没有任何内容绑定到ICache而且它不是自我-bindable。请注意,在我知道已经创建了一个单例之后,我正在尝试检索ICache对象,所以它并不像没有创建实例那样愚蠢。
这是一个非常简单的配置。它是一个单个模块,加载了大约十几个映射,全部映射到InSingletonScope()
的相应接口。我只需要获取实际已经实例化的列表。
有没有办法获取当前加载的单例绑定列表?同样,这仅用于调试目的。
感谢您的帮助。
答案 0 :(得分:0)
ICache
被注册为ninject组件。 IKernel.Components.Get<ICache>()
应该做到这一点。
没有&#34;开箱即用&#34;检索绑定或所有激活的单例的方法。
但是ICache
应该包含对所有单例的引用,因此您应该能够从那里检索实例化的单例。
但是您需要使用反射,因为缓存的值不可公开访问。