Ниже приведен пример реализации переопределения Object.Equals() для базового класса сущности, из которого выводятся все другие сущности в приложении.
Все классы сущностей имеют свойство Id, значение которого равно null. (Это первичный ключ любой таблицы, которой соответствует класс объекта.)
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
if (base.Equals(obj))
return true;
return Id.HasValue && ((EntityBase) obj).Id.HasValue &&
Id.Value == ((EntityBase) obj).Id.Value;
}
Учитывая эту реализацию Equals(), как вы правильно реализуете GetHashCode()?