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