我在我们的应用程序中使用无状态来实现状态机的逻辑。我们有一个AcceptedFile
具有其他内部(子)状态的状态。问题是我不知道我应该如何在我的代码中指示初始内部状态,以便当一个机器转换到AccptedFile
状态它也会自动转换到它的初始内部状态。这是我为模拟这种行为所做的:
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
.
有没有更好的方法来实现这种行为?