Exemplo n.º 1
0
        /// <summary>
        /// Executes the transition action.
        /// </summary>
        /// <param name="arguments">The state machine event arguments.</param>
        public void Execute(object[] arguments)
        {
            Ensure.ArgumentNotNull(arguments, "arguments");

            if (arguments.Length != 1)
            {
                throw new ArgumentException(ExceptionMessages.CannotPassMultipleArgumentsToSingleArgumentAction(arguments, this.Describe()));
            }

            if (!typeof(T).IsAssignableFrom(arguments[0].GetType()))
            {
                throw new ArgumentException(ExceptionMessages.CannotCastArgumentToActionArgument(arguments[0], this.Describe()));
            }

            var argument = (T)arguments[0];

            this.action(argument);
        }