我在重复自己,并违反DRY。我需要的是一个实现运算符 == 和 != 以及 GetHashCode 和 Equals 的基类。基类必须列出最顶层派生类的所有属性(通过反射?)。并在这些算子函数中比较这些属性,或者在 GetHashCode 中组合它们的哈希码。
示例伪代码:
public static Boolean operator == (KeyValue A, KeyValue B)
{
List<PropertiesOfKeyValueClass> Properties = Reflection.GetProperties(KeyValue);
foreach (Property prop in Properties)
{
if (A.prop != B.Prop) return false;
}
}
我无法想象这还没有在 .Net 框架中实现,但我找不到它。因此,我认为我可以先在 StackOverflow 上询问,而不是“发明轮子”。