Предположим, у меня есть услуга StateService который имеет способ ChangeState.Как и когда применять бизнес-правила?
ChangeState(State toState, DomainObject object)
У меня есть бизнес-правила, которые проверяют, является ли или нет в области объектов текущего «состояние» состояние назначения, как я могу технически проверить эти правила без предварительной установки toState на объекте домена? Сначала кажется неправильным: установить новое состояние, выполнить проверку и если одно или несколько нарушений правил отключить состояние.
Одним из решений, которое я придумал, является создание некоторого контекстного объекта, который управляет проверкой, например. ChangeStateContext, который содержит объект DomainObject вместе с состоянием, которое должно быть установлено.
Еще один связанный с этим вопрос - как откликнуться на призыв ChageState, как он прошел?
Я могу собрать все правила проверки, которые сломались, и выбросить исключение с теми правилами, которые вызывающий может уловить и обработать соответственно, или я могу добавить тип возврата в метод ChangeState, например ValidationSummary, который содержит информацию о нарушенных правилах и т. Д. Каковы наилучшие практики в этих случаях?