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'。如果你只想數它們,你就不需要它。 –