2010-06-10 33 views
1

在包含UserControl的WebProject上運行FxCop將導致該用戶控件中的每個ServerControl(Label,TextBox,...)出現CA2000警告(對象的Call System.IDisposable.Dispose)。用戶控件中的FxCop CA2000警告

我明白爲什麼會發生這種情況。
使用PlaceHolder替換'違規'ServerControls,然後在代碼中添加控件(使用... End Using)可能是一種解決方法,但它並不總是一種選擇。
但是,如果他們不是'猶太人',爲什麼有ServerControls你可以放在你的ascx/aspx首先?
我錯過了什麼嗎?

如果就像我的情況那樣,您繼承了相當複雜的UserControls的一個相當大的集合,現在是否將每個'違規'控件添加到GlobalSupperssions文件中(這是很多讓人麻木的右鍵單擊)?
我不想禁止所有CA2000警告,因爲修復它們非常合理,但不適用於UserControls中的ServerControls。

+0

我可能錯過了一些東西,但是你不會只是重寫處置(好吧,處置(布爾)我猜)並讓它處理你的usercontrol中包含的服務器控件?警告似乎是有道理的,如果你不'級聯'樹上的配置 – 2010-06-11 06:31:12

回答

0

Hmya,大家真的喜歡一個工具,會告訴他們,他們忘記調用Dispose()。問題是:這樣的工具真的很難實現。您正在談論的具體警告現在已被禁用並重新啓用了幾次。

顯然,你得到的警告是無稽之談,一個UserControl已經知道如何正確地處置其成員控件。這不僅僅是一個自動化工具可以輕易檢測到的東西。這個dispose調用距離構造函數調用一百萬英里,並且嵌入了.NET框架代碼中,並且混合了幾個虛擬方法和事件處理程序。

真的評估這些警告,你必須切換到另一個工具:你的耳朵之間的一個。

+0

謝謝,你幾乎證實我的耳朵之間是什麼,我猜是我所需要的。 – esjr 2010-06-12 12:58:04

相關問題