假設我有一個服務StateService它有一個方法ChangeState。如何以及何時應用業務規則?
ChangeState(State toState, DomainObject object)
我有一個檢查目標狀態是否有效或無效的域對象當前的「狀態」,我怎麼能在技術上檢查這些規則,而不先設置使用toState域對象的業務規則?首先設置新狀態,運行驗證並且如果一個或多個規則中斷取消設置狀態,則感覺錯誤。
我想出的一個解決方案是創建一些驅動驗證的上下文對象,例如。 ChangeStateContext包含DomainObject以及要設置的狀態。
另一個相關的問題是如何從ChageState調用回報它是如何去的?
我可以收集所有違規的驗證規則,並拋出一個異常與調用者可以捕獲並相應處理的規則,或者我可以在ChangeState方法上添加返回類型,如ValidationSummary,其中包含關於違反規則等的信息。這些情況下的最佳做法是什麼?