Переопределить 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();
    }
}
Другие вопросы по тегам