2016-06-24 116 views

回答

2

你不能讓人們避免引用。你可以做的是使對象無用。實施IDisposable似乎是一個很好的方法來做到這一點。所以,你可以讓你這樣的回撥電話,以確保一旦回調完成後,它的配置:

using (var myDisposable = GetStuff()) 
    myAction(myDisposable); 

這是給您記錄您的API,然後信任你的用戶不會搬起石頭砸自己與它的腳。

+0

在調試模式下顯式調用'GC.Collect()'並對倖存者進行計數也可以幫助檢測引用被保留在適當範圍之外。 –

+0

如果你的API只包含幾個類,你可以在所有的類中創建類型特定的包裝器,每個包裝器在一個專用字段中持有* real *對象的'WeakReference '。 ('IDisposable'是一個更好的方法,只是爲了討論而拋出想法!) – wablab

相關問題