Переопределить Equals в частичном классе
Я использую EF 4.3. Чтобы расширить функциональность классов сущностей, я создаю частичные классы. Это прекрасно работает в основном.
Фреймворк создает от 1 до многих свойств навигации в виде хэш-наборов, и мне нужно изменить некоторые из них, так как они содержат списки элементов, которыми пользователь манипулирует во время посещения сайта.
В идеале я хотел бы предоставить переопределения для Equals и HashCode, однако код не компилируется, а вместо этого выдает сообщение "не найден подходящий метод для переопределения".
Есть ли обходные пути для этой проблемы?
1 ответ
В вашем вопросе не так много кода, с которого можно начать:), но, как правило, для добавления пользовательских элементов equlity вы должны создать вторую часть частичного класса и позволить ему реализовать IEquatable<T>
интерфейс
Если вы сделаете это, то также желательно переопределить не общие члены равенства Equals()
а также GetHashCode()
из Object
, который вы всегда должны иметь возможность переопределить. Возможно, исключение вызвано тем, что вы используете "HashCode" вместо "GetHashCode".
Простой пример:
public partial class EntityClass : IEquatable<EntityClass>
{
public bool Equals(EntityClass other)
{
return this.Id == other.Id;
}
public override bool Equals(object other)
{
return (other is EntityClass)
&& this.Id == ((EntityClass)other).Id;
}
public override int GetHashCode()
{
return this.Id.GetHashCode();
}
}