1

UserControl を含む WebProject で FxCop を実行すると、その UserControl 内のすべての ServerControl (Label、TextBox、...) に対して CA2000 警告 (オブジェクトに対して System.IDisposable.Dispose を呼び出します) が発生します。

なぜこれが起こるのか理解しています。
「問題のある」ServerControls を PlaceHolder に置き換えてから、コントロールをコードに追加する (Using...End Using) ことは、それを回避する方法かもしれませんが、常にオプションであるとは限りません。
しかし、それらが「コーシャ」でない場合、最初に ascx/aspx にドロップできる ServerControls があるのはなぜですか?
何か不足していますか?

私の場合のように、かなり複雑な UserControls のかなりのコレクションを継承する場合、すべての「問題のある」コントロールを GlobalSupperssions ファイルに追加しますか?
すべての CA2000 警告を抑制したくはありませんが、それらを修正することは完全に理にかなっていますが、UserControls 内の ServerControls の場合はそうではありません。

4

1 に答える 1

0

Dispose() を呼び出すのを忘れたことを知らせるツールは、誰もが本当に気に入っています。問題は、そのようなツールを実装するのが非常に難しいことです。あなたが話している特定の警告は、数回無効になり、再度有効になりました。

明らかに、あなたが得た警告はナンセンスです。UserControl は、メンバー コントロールを適切に破棄する方法を既に知っています。自動化されたツールが簡単に検出できるものではありません。dispose 呼び出しは、コンストラクター呼び出しから何百万マイルも離れたものであり、いくつかの仮想メソッドとイベント ハンドラーが混在してスローされる .NET フレームワーク コードに埋め込まれています。

これらの警告を実際に評価するには、別のツールに切り替える必要があります。耳の間のツールです。

于 2010-06-10T23:42:56.480 に答える