1
我需要一个诊断/管理页面来显示Autofac在当前时间点正在管理的内容。很适合查找泄漏和错误。获取所有当前Autofac管理的实例的信息
There is a way来计算Autofac解析对象的数量。然而它很重,不应该用于生产。
There is a way记录所有分辨率。同样,它不应该用于生产。
与这些解决方案不同,我需要的只是当前管理对象的快照。这是可能的,没有捕获每个解决事件并存储它(如上所述)?
我需要一个诊断/管理页面来显示Autofac在当前时间点正在管理的内容。很适合查找泄漏和错误。获取所有当前Autofac管理的实例的信息
There is a way来计算Autofac解析对象的数量。然而它很重,不应该用于生产。
There is a way记录所有分辨率。同样,它不应该用于生产。
与这些解决方案不同,我需要的只是当前管理对象的快照。这是可能的,没有捕获每个解决事件并存储它(如上所述)?
Autofac将只创建服务的情况下,除了IDisposable
服务不跟踪任何服务。如果你想拥有所有解决的服务,你将不得不监视并记录它们。
IDisposable
实例持续存在于IDisposer
接口的私有实现的私有字段中。每个ILifetimeScope
都包含自己的IDisposer
实例,并且无法跟踪生命周期创建,因此无法获取所有活动的ILifetimescope
。
跟踪创建实例并不像看起来那么沉重。您提供的链接是实施此功能的好起点。不要忘记使用WeakReference
和ConditionalWeakTable
来避免任何内存泄漏。
是否有必要使用'WeakReference',如果你只是保持运行计数? – grokky
@grokky只有当你想访问实例时,你才需要'WeakReference'。如果你只想数它们,你就不需要它。 –