0

私は現在、すでに約1年開発されているアプリケーションを介してFxCopを実行するプロセスを実行しています。

私が確信していないルールの1つは、UseGenericEventHandlersInstancesです。私はそれを実装する方法を理解していますが、カスタムイベントハンドラーごとにデリゲートを定義する必要があるというステップを節約する以外に、実際には利点がわかりません。私たちの場合、すでにこれらのデリゲートが作成されているので、イベントハンドラーを変更するメリットがあるのか​​、それともこのルールを無効にするだけでよいのか疑問に思います。

私の限られた経験では、ほとんどすべてのFxCopルールがMicrosoftと.NETFrameworkに準拠しているように見えます。ただし、この場合はそうではありません。.NET Frameworkは、少なくとも私が調査したすべてのマウスとキーボードのイベントハンドラーに対して、デリゲートを宣言するという、私たちが使用してきた従来のアプローチを使用しています。

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

4

1 に答える 1

1

最近のバージョンの.NETBCLに見られる非ジェネリックデリゲートのほとんどは、ジェネリックが導入される前に作成されました。EventHandlerを使用するように既存のイベントを変更すると、他のコードで使用される可能性のあるpublic _ __EventHandlerデリゲートが削除されるのと同様に、重大な変更になります。ただし、BCLによって公開される新しいイベントにはかなりのEventHandlerが使用されるため、Microsoftが新しいコードのルールに準拠していないと想定するのは誤りです。

あなたの場合、古いイベント宣言を変更することが重大な変更であるか、価値が低い場合は、ルールの既存の違反を抑制することを選択できます。もちろん、新しいイベントの場合でもルールを無視することもできますが、ルールに従うことで、APIの使いやすさを向上させながら、元の開発者の不要な作業を実際に回避できるため、なぜそうするのかわかりません。

于 2012-03-27T13:02:56.593 に答える