首页 > 解决方案 > .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 中实现多个防护?

标签: c#.netstate-machinestateless-state-machine

解决方案


我不认为这是可能的。特别是在阅读文档中的此声明后:

一个状态内的保护子句必须是互斥的(多个保护子句不能同时有效。)

我想将所有条件捆绑在唯一的守卫中是要走的路。

https://github.com/dotnet-state-machine/stateless


推荐阅读