Frage

Ich bin derzeit die Verwendung von FxCop mit einem unserer bestehenden Projekte und bin ein seltsames Ergebnis.

Die Ausgabe zeigt eine kleine Anzahl von Verstößen gegen die ‚außer Kraft setzen Methoden auf vergleichbare Typen‘ Regel, die besagt „‚Log‘sollte Equals überschreiben, da es IComparable implementiert.“

Es gibt zwei Probleme mit diesem:

  1. Ich dachte, dass es nur notwendig CompareTo zu implementieren, wenn IComparable Umsetzung (MSDN selbst diese bestätigt)
  2. Die Klasse ist nicht die Umsetzung IComparable aber IComparable<T> und hat impliment CompareTo als stark typisierte.

So ist es FxCop (1,36) mit einem wackeligen werfen oder ist es mein Verständnis aus dem Gleichgewicht gerät das ist hier ..?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

FxCop ist ein ziemlich paranoiden Werkzeug ... In diesem Fall nehme ich an, es versucht, Sie zu warnen, dass Sie die Logik des Vergleichs irgendwie ändern und Sie sollten die Änderung der Gleichheit Logik nicht vergessen, wenn nötig. Sie sehen, manchmal CompareTo Methode gibt 0, die mit der Verwendung von Equals konsistent sein sollten.

Ist dies nicht wirklich Ihr Fall ist, und Sie sind sicher, dass Sie eine der Überlastung nicht brauchen (

Andere Tipps

Ich würde überschreiben Equals,

  • rufen Sie einfach an base.Equals in Ihrer Methode
  • und einen Kommentar hinzufügen zu erklären, warum die oben ist alles, was benötigt wird,

Auf diese Weise FxCop ist glücklich, und so ist der nächste Programmierer, die an Ihrem Code aussieht. (In einigen wenigen Fällen können Sie nicht den oben tun wegen proforance Probleme, aber diese sind selten in diesen Tagen.

scroll top