2012-03-27 7 views
0

私は現在、約1年前から開発中のアプリケーションを通じてFxCopを実行するプロセスを進めています。MicrosoftがUseGenericEventHandlersInstances FxCopルールに従わない

私が確信しているルールの1つは、UseGenericEventHandlersInstancesです。私はそれを実装する方法を理解していますが、各カスタムイベントハンドラのデリゲートを定義する手間を省くことを除けば、実際には利益が見られません。私たちのケースでは、すでにこれらの代理人が作成されており、イベントハンドラの変更のメリットがあるかどうか、またはこのルールを無効にするだけでよいのだろうかと思います。

私の限られた経験では、ほとんどすべてのFxCopのルールは、Microsoftと.NETフレームワークに準拠しているようです。しかし、この場合、それは真実ではありません。 .NETフレームワークは、私が調査したマウスやキーバードのイベントハンドラの少なくともすべてについて、宣言した代理人が使用していた従来のアプローチを使用します。

マイクロソフトが何をしているのかわからないのは誰も知りませんが、これによってさらにこのルールの有効性と利点が疑問になります。

答えて

1

最近のバージョンの.NET BCLで表示される非汎用代理者のほとんどは、ジェネリックが導入される前に作成されました。 EventHandlerを使用するために既存のイベントを変更することは、他のコードで使用されるかもしれないpublic _ __EventHandlerデリゲートを削除するように、大きな変更になります。しかし、BCLによって公開される新しいイベントにはEventHandlerがかなり使用されているため、Microsoftが新しいコードのルールを遵守していないと想定するのは間違いです。

古いイベントの宣言を変更することは大きな変更になるか、値が低い場合は、既存のルール違反を抑制することができます。もちろん、新しいイベントの場合でもルールを無視することもできますが、APIの使用可能性を向上させながらオリジナルの開発者の不必要な作業を実際に回避するという理由で、なぜそうしたいのかわかりません。

+0

デリゲートを定義する必要がない以外に、実際の節約額は何ですか?特定のカスタムEventArgsクラスにイベントをバインドしているため、利便性の向上は見られません。 – WPFNewbie

+0

Microsoftが新しい汎用メソッドを使用しているサンプルイベントがありますか?私は何も見ることができませんでした。 – WPFNewbie

+0

1つ少ないデリゲートを定義することは、著者にとっては少しの利益です。 YetAnotherEventHandlerが何を表しているかを調べる必要はなく、消費者の利益(おそらく大きいもの)です。 EventHandler のBCLでの使用例はたくさんあります。 mscorlibで最初に公開したのは、System.AppDomain.FirstChanceExceptionです。 –

関連する問題