2017-03-18 36 views
1

我需要一個診斷/管理頁面來顯示Autofac在當前時間點正在管理的內容。很適合查找泄漏和錯誤。獲取所有當前Autofac管理的實例的信息

There is a way來計算Autofac解析對象的數量。然而它很重,不應該用於生產。

There is a way記錄所有分辨率。同樣,它不應該用於生產。

與這些解決方案不同,我需要的只是當前管理對象的快照。這是可能的,沒有捕獲每個解決事件並存儲它(如上所述)?

回答

1

Autofac創建服務的情況下,除了IDisposable服務不跟蹤任何服務。如果你想擁有所有解決的服務,你將不得不監視並記錄它們。

IDisposable實例持續存在於IDisposer接口的私有實現的私有字段中。每個ILifetimeScope都包含自己的IDisposer實例,並且無法跟蹤生命週期創建,因此無法獲取所有活動的ILifetimescope

跟蹤創建實例並不像看起來那麼沉重。您提供的鏈接是實施此功能的好起點。不要忘記使用WeakReferenceConditionalWeakTable來避免任何內存泄漏。

+0

是否有必要使用'WeakReference',如果你只是保持運行計數? – grokky

+1

@grokky只有當你想訪問實例時,你才需要'WeakReference'。如果你只想數它們,你就不需要它。 –

相關問題