Ich bin gerade dabei, FxCop über unsere Anwendung zu laufen, die bereits seit etwa einem Jahr entwickelt wird.Microsoft folgt nicht UseGenericEventHandlersInstances FxCop-Regel
Eine Regel, die ich unsicher bin, ist UseGenericEventHandlersInstances. Ich verstehe, wie man es implementiert, aber sehe nicht wirklich den Vorteil, abgesehen von dem Speichern des Schritts, einen Delegaten für jeden benutzerdefinierten Ereignishandler zu definieren. In unserem Fall haben wir diese Delegierten bereits erstellt und ich frage mich, ob wir irgendwelche Vorteile haben, unsere Event-Handler zu ändern oder diese Regel einfach zu deaktivieren.
In meiner begrenzten Erfahrung scheinen fast alle FxCop-Regeln eingehalten zu werden, um Microsoft und das .NET-Framework zu sein. In diesem Fall stimmt das jedoch nicht. Das .NET-Framework verwendet den traditionellen Ansatz, den wir verwendet haben, mit Delegaten zu deklarieren, zumindest für alle Maus- und Keybaord-Event-Handler, die ich untersucht habe.
Niemand weiß, warum Microsoft etwas tut oder tut, aber das lässt mich die Gültigkeit und den Nutzen dieser Regel in Frage stellen.
Abgesehen davon, dass Sie keinen Delegierten definieren müssen, was sind die wirklichen Einsparungen? Sie binden das Ereignis weiterhin an eine bestimmte benutzerdefinierte EventArgs-Klasse, sodass die Nutzbarkeitsgewinne nicht angezeigt werden. – WPFNewbie
Haben Sie ein Beispielereignis, bei dem Microsoft die neue generische Methode verwendet? Ich konnte keine sehen. – WPFNewbie
Das Definieren eines Delegates weniger ist für den Autor ein bisschen Gewinn. Nicht nachsehen zu müssen, was YetAnotherEventHandler darstellt, ist ein Gewinn (wohl ein größerer) für den Verbraucher. Als Beispiele für EventHandler Verwendung in der BCL gibt es viele. Die erste öffentliche, die ich in mscorlib gefunden habe, ist System.AppDomain.FirstChanceException. –