0

注意:这个问题专门针对 C# 的无状态库及其状态机的实现。

设想:

我有一个典型的状态机。但是,如果我遇到意外的错误触发器,我需要一种方法来恢复到不同的状态。

OnUnhandledTrigger并且OnUnhandledTriggerAsync可用于在为状态抛出错误触发器时调用功能。但是,尝试移动到可以反馈到正常状态机的“错误状态”的最佳实践是什么?毕竟,我不能直接“设置”状态机的状态。

我应该创建一个临时转换,强制它触发,然后删除转换吗?我是否应该创建中间存储,以便可以强制将状态设置在状态机对象之外?还是有不同的方法可以在这里采取?

示例案例

定义:

start --[trigger.accept]-> accepting
accepting --[trigger.subnegotiate]-> subnegotiation
subnegotiation --[trigger.1]-> echo
subnegotiation --[trigger.expectedbadtrigger]-> errorstate

状态触发

trigger.accept --> accepting
trigger.subnegotiate --> subnegotiation
trigger.unexpectedbadtrigger --> [Calls OnUnhandledTrigger]

我需要unexpectedbadtrigger将状态移动到errorstate.

4

0 回答 0