正在调试Ninject..获取活动单身汉的列表

本文关键字:单身汉 列表 活动 获取 调试 Ninject | 更新日期: 2023-09-27 18:00:39

我在.NET 3.5 Compact Framework上使用Ninject 3。

我有一个使用InSingletonScope()绑定的各种东西的应用程序。

出于调试目的,我需要知道哪些singleton实际上已经被激活。。。哪些绑定已被请求和解析,以及哪些singleton实际被实例化。

我找不到获取当前活动的单例绑定列表的方法。我也找不到一种方法来获得完整的绑定列表来迭代它们。

我确实看到过一篇帖子,其中提到我应该能够调用kernel.Get<ICache>来获取包含实例的缓存对象,但该调用给了我一个激活异常,表示没有任何东西绑定到ICache,并且它不可自绑定。请注意,在我知道已经创建了一个单例之后,我试图检索ICache对象,所以这并不是什么愚蠢的事情,比如还没有创建实例。

这是一个非常简单的配置。它是一个加载了大约十几个映射的单个模块,所有映射都映射到具有InSingletonScope()的相应接口。我只需要得到实际实例的列表。

是否有某种方法可以获得当前加载的单例绑定的列表?同样,这仅用于调试目的。

谢谢你的帮助。

正在调试Ninject..获取活动单身汉的列表

ICache注册为一个ninject组件。IKernel.Components.Get<ICache>()应该会起作用。

没有"开箱即用"的简单方法来检索绑定或所有激活的singleton。但是,ICache应该包含对所有单例的引用,因此您应该能够从中检索已实例化的单例。

但是您将需要使用反射,因为缓存的值是不可公开访问的。