FxCop 和 IComparable/IComparable<T>

标签 fxcop icomparable icomparablet

我目前正在调查 FxCop 在我们现有项目之一中的使用情况,并得到了一个奇怪的结果。

输出显示少量违反“重写可比较类型上的方法”规则,指出““Log”应重写 Equals,因为它实现了 IComparable。”

这有两个问题:

  1. 我认为只需要实现 CompareTo实现IComparable时(MSDN 本身也证实了这一点)
  2. 该类未实现 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/

相关文章:

c# - native C# 支持检查 IEnumerable 是否已排序?

c# - C# 中的 IComparable

带有泛型的 C# 装箱枚举错误

visual-studio - VS2008中的代码分析(FxCop)功能在哪里?

jenkins - FxCop 必须安装错误

C#:IComparable 实现私有(private)

c# - 此搜索方法中 IComparable 和 IComparable<T> 的区别

stack-overflow - 使用 FxCop Introspection 进行代码分析的无限循环

c# - 当属性 getter/setter 需要 LinkDemand 时,如何安抚 FxCop?