假设我有一个服务StateService,它有一个方法ChangeState。
ChangeState(State toState, DomainObject object)
我有业务规则来检查目标状态在域对象当前“状态”中是否有效,我如何在不首先在域对象上设置 toState 的情况下从技术上检查这些规则?首先设置新状态,运行验证,如果一个或多个规则破坏取消设置状态,感觉是错误的。
我想出的一种解决方案是创建一些驱动验证的上下文对象,例如。 ChangeStateContext包含 DomainObject 以及要设置的状态。
另一个相关问题是如何从 ChageState 电话中报告进展情况?
我可以收集所有破坏并抛出异常的验证规则,调用者可以相应地捕获和处理这些规则,或者我可以在 ChangeState 方法上添加返回类型,例如ValidationSummary,其中包含有关破坏规则等的信息。在这些情况下,最佳做法是什么?