c# - .NET 无状态多重 PermitIf
问题描述
我需要在我的.Net Stateless state machine中为某个状态添加多个警卫。
考虑以下模拟场景。如果满足两个条件,我只能允许从插入到修改:
_sm.Configure(State.Insert)
.PermitReentry(Trigger.Insert)
.PermitIf(Trigger.Modify, State.Modified, Condition1, "Only permitted when condition 1 true")
.PermitIf(Trigger.Modify, State.Modified, Condition2, "Only permitted when condition 2 true")
.Permit(Trigger.Cancel, State.Canceled)
在上面的代码中,仅评估第一个条件。我也可以将两个条件捆绑成一个条件,在一个 PermitIf 中传递它,但我宁愿不这样做:
.PermitIf(Trigger.Modify, State.Modified, BundledCondition, "Only permitted when bundled condition is true")
有没有办法在 dotnet-state-machine 中实现多个防护?
解决方案
我不认为这是可能的。特别是在阅读文档中的此声明后:
一个状态内的保护子句必须是互斥的(多个保护子句不能同时有效。)
我想将所有条件捆绑在唯一的守卫中是要走的路。
推荐阅读
- java - Javamail getContent() 致命错误 java.lang.NoClassDefFoundError
- oracle - 在 Oracle EBS v12 中选择位置时出错
- javascript - 编辑器错误 - 未找到此类编辑器:制表符代码中的 dateEditor
- c# - 在 .NET-core 中找不到 TestContext 类
- android - 无法滚动到 RecyclerView 的底部
- android - event.params 评估为未定义;无法使用 Cloud Functions 访问 Firebase 实时数据库中的 event.params.post
- flutter - 如何在没有等待的情况下获得未来价值?
- python - 如何在 python 数据框的单列中划分元素?
- reactjs - 如何模拟异步操作
- python - 定义参数中冒号的目的是什么?