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); }
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); }
public bool HasHandlerFor(TTriggerType trigger, out TriggerStrategy handler) { return(HasLocalHandlerFor(trigger, out handler) || (Superstate != null && Superstate.HasHandlerFor(trigger, out handler))); }