我正在使用stateless来实现我们应用程序中状态机的逻辑。我们有一个AcceptedFile
状态,其中包含其他内部(子)状态。问题是我不知道如何在代码中指示初始内部状态,以便当机器转换到AcceptedFile
状态时,它也会自动转换到其初始内部状态。以下是我模拟此行为的方法:
machine.Configure(State.AcceptedFile)
.OnEntry(() => machine.Fire(Trigger.MakeReadyForAdvertising))
.Permit(Trigger.MakeReadyForAdvertising,State.ReadyForAdvertising)
这里的ReadyForAdvertising
是AcceptedFile
的内部状态。在大多数情况下,这种方法都很好用,但是当我将状态机的初始状态设置为AcceptedFile
时,会出现以下问题:
var statemachine=new StateMachine<State,Trigger>(State.AcceptedFile)
...
自动转换不会发生,因此机器将处于AcceptedFile状态,而不是ReadyForAdvertising状态。
有没有更好的实现方式?