通常在廢棄的私有成員,你不妨做到以下幾點:告訴FxCop的另一種方法是調用dispose
public void Dispose() {
var localInst = this.privateMember;
if (localInst != null) {
localInst.Dispose();
}
}
當地作業的目的是爲了避免出現競爭狀況,其中另一個線程可以分配私有成員在空檢查後爲空。在這種情況下,我不在乎Dispose
在實例上被調用兩次。
我使用這個模式所有的時間,所以我寫了一個擴展的方法來做到這一點:
public static void SafeDispose(this IDisposable disposable)
{
if (disposable != null)
{
// We also know disposable cannot be null here,
// even if the original reference is null.
disposable.Dispose();
}
}
在我的課
而現在,我可以做到這一點:
public void Dispose() {
this.privateMember.SafeDispose();
}
問題是, FxCop不知道我在做這件事,它在每種情況下都會給我提供CA2000: Dispose objects before losing scope警告。
我不想關閉這條規則,我不想壓制每一種情況。有沒有辦法暗示FxCop這個方法相當於Dispose
就它而言?
您樣品說'this.privateMember.Dispose()'。你的代碼實際上是否說'this.privateMember.SafeDispose()'? –