3

我需要在我的.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 中实现多个防护?

4

1 回答 1

2

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

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

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

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

于 2019-08-06T20:29:02.527 回答