我在重复自己,并且违反了DRY。我需要的是一个实现operator ==和!=以及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上询问,而不是“发明轮子”。