Simple data class representing the step definition
Inheritance: IProgressStepDefinition
        /// <summary>
        /// Creates a step from definition
        /// </summary>
        /// <param name="controller">The hosting <see cref="IProgressController"/> for this step</param>
        /// <param name="definition">The <see cref="ProgressStepDefinition"/> for which to create the step</param>
        public ProgressControllerStep(IProgressController controller, ProgressStepDefinition definition)
        {
            if (controller == null)
            {
                throw new ArgumentNullException(nameof(controller));
            }

            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            this.controller = controller;
            this.definition = definition;
            this.Initialize();
        }
        /// <summary>
        /// Creates a step from definition
        /// </summary>
        /// <param name="controller">The hosting <see cref="IProgressController"/> for this step</param>
        /// <param name="definition">The <see cref="ProgressStepDefinition"/> for which to create the step</param>
        public ProgressControllerStep(IProgressController controller, ProgressStepDefinition definition)
        {
            if (controller == null)
            {
                throw new ArgumentNullException(nameof(controller));
            }

            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            this.controller = controller;
            this.definition = definition;
            this.Initialize();
        }
        public IProgressStepOperation CreateStepOperation(IProgressController controller, IProgressStepDefinition definition)
        {
            if (controller == null)
            {
                throw new ArgumentNullException(nameof(controller));
            }

            ProgressStepDefinition supportedDefinition = definition as ProgressStepDefinition;

            if (supportedDefinition == null)
            {
                throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, ProgressResources.UnsupportedTypeException, definition.GetType().FullName, typeof(ProgressStepDefinition).FullName));
            }

            ProgressControllerStep step = new ProgressControllerStep(controller, supportedDefinition);

            return(step);
        }