Ejemplo n.º 1
0
            public void AddTriggerStrategy(TriggerStrategy triggerBehaviour)
            {
                ICollection <TriggerStrategy> allowed;

                if (!_triggerStrategies.TryGetValue(triggerBehaviour.Trigger, out allowed))
                {
                    allowed = new List <TriggerStrategy>();
                    _triggerStrategies.Add(triggerBehaviour.Trigger, allowed);
                }
                allowed.Add(triggerBehaviour);
            }
Ejemplo n.º 2
0
            private bool HasLocalHandlerFor(TTriggerType trigger, out TriggerStrategy handler)
            {
                ICollection <TriggerStrategy> possible;

                if (!_triggerStrategies.TryGetValue(trigger, out possible))
                {
                    handler = null;
                    return(false);
                }

                var actual = possible.Where(at => at.ConditionPositive).ToArray();

                if (actual.Count() > 1)
                {
                    throw new InvalidOperationException(
                              string.Format("Ambiguous trigger transition on trigger {0} on state {1}",
                                            trigger, _state));
                }

                handler = actual.FirstOrDefault();
                return(handler != null);
            }
Ejemplo n.º 3
0
 public bool HasHandlerFor(TTriggerType trigger, out TriggerStrategy handler)
 {
     return(HasLocalHandlerFor(trigger, out handler) ||
            (Superstate != null && Superstate.HasHandlerFor(trigger, out handler)));
 }