Esempio n. 1
0
        /// <summary>
        /// Actually registers a new parameter handler.
        /// </summary>
        /// <param name="parameterName">The name of the parameter.</param>
        /// <param name="valueDescriptionString">The description string for the parameter value.</param>
        /// <param name="descriptionString">The description string for the parameter.</param>
        /// <param name="isFlag">The value indicating whether the parameter represents a flag and, thus, doesn't need a value.</param>
        /// <param name="handler">The delegate to handle the parameter.</param>
        /// <param name="parameterType">Whether the parameter is required or optional.</param>
        private void RegisterParameterHandlerImpl(
            string parameterName,
            string valueDescriptionString,
            string descriptionString,
            bool isFlag,
            Func <string, bool> handler,
            CommandLineParameterType parameterType)
        {
            Debug.Assert(handler != null, "A valid handler should be specified.");

            if (string.IsNullOrEmpty(parameterName))
            {
                throw new ArgumentException("A parameter name should be a valid non-empty string.", "parameterName");
            }

            if (this.parameterDescriptions.ContainsKey(parameterName))
            {
                throw new ArgumentException("Given parameter was already registered.", "parameterName");
            }

            if (!isFlag && string.IsNullOrEmpty(valueDescriptionString))
            {
                throw new ArgumentException("A parameter value description should be a valid non-empty string.", "valueDescriptionString");
            }

            if (string.IsNullOrEmpty(descriptionString))
            {
                throw new ArgumentException("A parameter description should be a valid non-empty string.", "descriptionString");
            }

            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }

            this.parameterDescriptions.Add(
                parameterName, new ParameterDescription(valueDescriptionString, descriptionString, isFlag, handler, parameterType));
        }
Esempio n. 2
0
            /// <summary>
            /// Initializes a new instance of the <see cref="ParameterDescription"/> class.
            /// </summary>
            /// <param name="valueDescriptionString">The value description string for the parameter.</param>
            /// <param name="descriptionString">The description string for the parameter.</param>
            /// <param name="isFlag">The value indicating whether the parameter represents a flag and, thus, doesn't need a value.</param>
            /// <param name="handler">The handler for the parameter value.</param>
            /// <param name="type">The type.</param>
            public ParameterDescription(
                string valueDescriptionString, string descriptionString, bool isFlag, Func <string, bool> handler, CommandLineParameterType type)
            {
                Debug.Assert(!(!isFlag && string.IsNullOrEmpty(valueDescriptionString)), "A valid value description string should be specified for non-flag parameters.");
                Debug.Assert(!string.IsNullOrEmpty(descriptionString), "A valid description string should be specified.");
                Debug.Assert(!(isFlag && type == CommandLineParameterType.Required), "A flag can not be required.");
                Debug.Assert(handler != null, "A valid handler should be specified.");

                this.ValueDescriptionString = valueDescriptionString;
                this.DescriptionString      = descriptionString;
                this.IsFlag  = isFlag;
                this.Handler = handler;
                this.Type    = type;
            }
Esempio n. 3
0
        /// <summary>
        /// Registers a new handler for the parameter of floating-point type.
        /// </summary>
        /// <param name="parameterName">The name of the parameter.</param>
        /// <param name="valueDescriptionString">The description string for the parameter value.</param>
        /// <param name="descriptionString">The description string for the parameter.</param>
        /// <param name="handler">The handler.</param>
        /// <param name="parameterType">Whether the parameter is required or optional.</param>
        public void RegisterParameterHandler(
            string parameterName, string valueDescriptionString, string descriptionString, Action <double> handler, CommandLineParameterType parameterType)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }

            Func <string, bool> handlerWrapper = parameterValueString =>
            {
                double parameterValue;
                if (!double.TryParse(parameterValueString, out parameterValue))
                {
                    return(false);
                }

                handler(parameterValue);
                return(true);
            };

            // Other parameters are checked inside the RegisterParameterHandlerImpl
            this.RegisterParameterHandlerImpl(parameterName, valueDescriptionString, descriptionString, false, handlerWrapper, parameterType);
        }
        /// <summary>
        /// Registers a new handler for the command-line parameter of string type.
        /// </summary>
        /// <param name="parameterName">The name of the parameter.</param>
        /// <param name="valueDescriptionString">The description string for the parameter value.</param>
        /// <param name="descriptionString">The description string for the parameter.</param>
        /// <param name="handler">The handler.</param>
        /// <param name="parameterType">Whether the parameter is required or optional.</param>
        public void RegisterParameterHandler(
            string parameterName, string valueDescriptionString, string descriptionString, Action <string> handler, CommandLineParameterType parameterType)
        {
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }

            Func <string, bool> handlerWrapper = parameterValueString =>
            {
                handler(parameterValueString);
                return(true);
            };

            // Other parameters are checked inside the RegisterParameterHandlerImpl
            this.RegisterParameterHandlerImpl(parameterName, valueDescriptionString, descriptionString, false, handlerWrapper, parameterType);
        }