我目前正在调查 FxCop 在我们现有项目之一中的使用情况,并得到了一个奇怪的结果。
输出显示少量违反“重写可比较类型上的方法”规则,指出““Log”应重写 Equals,因为它实现了 IComparable。”
这有两个问题:
- 我认为只需要实现
CompareTo
实现IComparable
时(MSDN 本身也证实了这一点) - 该类未实现
IComparable
但是IComparable<T>
并将 CompareTo 实现为强类型。
所以 FxCop (1.36) 抛出了一个不稳定的问题,还是我的理解不正常......?
提前致谢。
最佳答案
FxCop 是一个相当偏执的工具...在这种情况下,我想,它试图警告您,您正在以某种方式更改比较逻辑,并且您不应该忘记在需要时更改相等逻辑。你看,CompareTo方法有时会返回0,这应该和使用Equals是一致的。
如果这不是您的情况,并且您确定不需要任何重载( an example in MSDN 表明您还需要覆盖所有其他等于运算符)...那么只需抑制警告或禁用它。
关于FxCop 和 IComparable/IComparable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/882156/