我需要一个诊断/管理页面来显示Autofac在当前时间点管理的内容。适合发现泄漏和漏洞。
There is a way计算Autofac已解析的对象数。但它很重,不应该用于生产。
There is a way记录所有决议。同样,它不应该用于生产。
与这些解决方案不同,我需要的只是当前托管对象的快照。这是可能的,没有捕获每个解决方案事件并存储它(如上所述)?
答案 0 :(得分:1)
Autofac 将仅创建服务实例,但IDisposable
服务除外,它不会跟踪任何服务。如果要拥有所有已解析的服务,则必须监视并记录它们。
IDisposable
个实例持久存储在IDisposer
接口的私有实现的私有字段中。每个ILifetimeScope
都包含自己的IDisposer
个实例,如果不跟踪生命周期的创建,就无法获取所有活动的ILifetimescope
。
跟踪实例创建并不像看起来那么重。您提供的链接是实现此类功能的良好起点。不要忘记使用WeakReference
和ConditionalWeakTable
来避免任何内存泄漏。