Я думаю, что проблема заключается в том, что вы используете универсальный класс Specification
, который принимает лямбда-выражение в своем конструкторе.Цель спецификации, на мой взгляд, состоит в том, чтобы указать некоторые ограничения на объект домена.Поэтому я думаю, что вы должны сделать свой класс Specification
абстрактным и наследовать его от класса EmailExistsSpecification
и класса AccountIdIsNotEqualSpecification
.Это может выглядеть примерно так:
public class EmailExistsSpecification : Specification<Account>
{
public EmailExistsSpecification(string email)
: base(a => a.Email.ToUpper() == email.ToUpper())
{
}
}
Я думаю, что этот подход более показателен, чем использование универсального класса спецификации.