Я думаю использовать шаблон спецификации для целей проверки. Трудно сказать, как указать пользователю, почему некоторая спецификация не была удовлетворена. Что делать, если Specification.IsSatisfiedBy()
не только вернет значение bool
, но и причину сбоя. Он будет выглядеть примерно так:
interface ISpecification<T>
{
CheckResult IsSatisfiedBy(T candidate);
}
где CheckResult
:
class CheckResult
{
public bool IsSatisfied { get; }
public string FailureReason { get; }
}
В Fowler and Evans существует концепция частично удовлетворительной спецификации, целью которой является дать объяснение, что именно не было выполнено. Однако в этом документе он реализован как дополнительный метод restundUnsatisfiedBy, который возвращает спецификацию, которая не была выполнена Кандидатом.
Итак, вопрос: при использовании Спецификации для целей валидации, как обеспечить обратную связь с пользователем о том, что данная Спецификация не была удовлетворена? Является ли решение, которое я представил выше, хорошо?