@@ -13,11 +13,32 @@ public StateMachineBuilder<TState, TTrigger, TData, TCommand> StartWith(TState s
1313 return this ;
1414 }
1515
16- public StateMachineBuilder < TState , TTrigger , TData , TCommand > OnUnhandled (
17- Action < TTrigger , TState , TData > handler )
16+ public UnhandledConfiguration OnUnhandled ( )
1817 {
19- _machine . OnUnhandled ( handler ) ;
20- return this ;
18+ return new UnhandledConfiguration ( this ) ;
19+ }
20+
21+ public sealed class UnhandledConfiguration
22+ {
23+ private readonly StateMachineBuilder < TState , TTrigger , TData , TCommand > _builder ;
24+
25+ internal UnhandledConfiguration ( StateMachineBuilder < TState , TTrigger , TData , TCommand > builder )
26+ {
27+ _builder = builder ;
28+ }
29+
30+ public StateMachineBuilder < TState , TTrigger , TData , TCommand > Ignore ( )
31+ {
32+ _builder . _machine . OnUnhandled ( ( _ , _ ) => Array . Empty < TCommand > ( ) ) ;
33+ return _builder ;
34+ }
35+
36+ public StateMachineBuilder < TState , TTrigger , TData , TCommand > Execute (
37+ Func < TTrigger , TState , IEnumerable < TCommand > > handler )
38+ {
39+ _builder . _machine . OnUnhandled ( handler ) ;
40+ return _builder ;
41+ }
2142 }
2243
2344 public StateConfiguration For ( TState state )
@@ -1062,11 +1083,39 @@ public StateMachineBuilder<TState, TTrigger, TCommand> StartWith(TState state)
10621083 return this ;
10631084 }
10641085
1065- public StateMachineBuilder < TState , TTrigger , TCommand > OnUnhandled (
1066- Action < TTrigger , TState > handler )
1086+ public UnhandledConfiguration OnUnhandled ( )
10671087 {
1068- _machine . OnUnhandled ( handler ) ;
1069- return this ;
1088+ return new UnhandledConfiguration ( this ) ;
1089+ }
1090+
1091+ public sealed class UnhandledConfiguration
1092+ {
1093+ private readonly StateMachineBuilder < TState , TTrigger , TCommand > _builder ;
1094+
1095+ internal UnhandledConfiguration ( StateMachineBuilder < TState , TTrigger , TCommand > builder )
1096+ {
1097+ _builder = builder ;
1098+ }
1099+
1100+ public StateMachineBuilder < TState , TTrigger , TCommand > Ignore ( )
1101+ {
1102+ _builder . _machine . OnUnhandled ( ( _ , _ ) => Array . Empty < TCommand > ( ) ) ;
1103+ return _builder ;
1104+ }
1105+
1106+ public StateMachineBuilder < TState , TTrigger , TCommand > Execute (
1107+ Func < TTrigger , TState , IEnumerable < TCommand > > handler )
1108+ {
1109+ _builder . _machine . OnUnhandled ( handler ) ;
1110+ return _builder ;
1111+ }
1112+
1113+ public StateMachineBuilder < TState , TTrigger , TCommand > Execute (
1114+ Func < TTrigger , TState , TCommand > handler )
1115+ {
1116+ _builder . _machine . OnUnhandled ( ( trigger , state ) => new [ ] { handler ( trigger , state ) } ) ;
1117+ return _builder ;
1118+ }
10701119 }
10711120
10721121 public StateConfiguration For ( TState state )
0 commit comments