Exemplo n.º 1
0
        IEnumerable <TState> GetTargetStates(IStateMachineDefinition <TState, TTrigger> definition, TState currentState, TTrigger trigger, Func <IEnumerable <TriggerDefinitionBase <TState, TTrigger> >, IEnumerable <TriggerDefinitionBase <TState, TTrigger> > > predicateFilter)
        {
            var prefiltered = definition
                              .GetStates()
                              .Where(sd => definition.Equals(sd.State, currentState))
                              .SelectMany(sd => sd.Triggers)
                              .Where(td => definition.Equals(td.Trigger, trigger));

            return(predicateFilter(prefiltered)
                   .Select(td => td.TargetState));
        }