示例#1
0
        public virtual BaseState NextState(TransitionEventArgs eventArgs)
        {
            BaseState      baseState      = this;
            BaseTransition baseTransition = this.DefaultTransition;

            Tracer <BaseState> .WriteInformation(string.Format("Getting Next state of {0} ({1})", this.ToString(), this.MachineName), new object[0]);

            try
            {
                foreach (BaseTransition current in this.ConditionalTransitions)
                {
                    if (current.ConditionsAreMet(this, eventArgs))
                    {
                        baseTransition = current;
                        Tracer <BaseState> .WriteInformation("Conditions are met for {0}", new object[]
                        {
                            current.ToString()
                        });

                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Tracer <BaseState> .WriteError(ex, "Checking transitions is failed: unexpected error", new object[0]);

                return(this.HandleTransitionException(baseState, ex));
            }
            if (baseTransition != null)
            {
                if (baseTransition == this.DefaultTransition)
                {
                    Tracer <BaseState> .WriteInformation("Selecting Default transition {0}", new object[]
                    {
                        baseTransition.Next.ToString()
                    });
                }
                Tracer <BaseState> .WriteInformation(string.Format("Next state of {0} is {1}", this.ToString(), baseTransition.Next), new object[0]);

                baseState = baseTransition.Next;
            }
            return(baseState);
        }
示例#2
0
 public void AddConditionalTransition(BaseTransition transition)
 {
     this.ConditionalTransitions.Add(transition);
 }
示例#3
0
		public void AddConditionalTransition(BaseTransition transition)
		{
			this.ConditionalTransitions.Add(transition);
		}