public void AddOption(string name, string longName, string description, string paramName, CommandlineOptionFlags flags,
                       Action <BaseCommandlineParser, string> action, int requiredPosition = int.MaxValue)
 {
     DoAddOption(name, longName, description, paramName, flags, action, requiredPosition);
 }
 /// <summary>
 /// Method for adding a new commandline argument with specified parameters.
 /// </summary>
 /// <param name="name">The short name.</param>
 /// <param name="longName">The long name.</param>
 /// <param name="description">The description.</param>
 /// <param name="flags">The flags.</param>
 /// <param name="action">The action.</param>
 public void AddOption(string name, string longName, string description, CommandlineOptionFlags flags,
                       Action <BaseCommandlineParser, string> action)
 {
     DoAddOption(name, longName, description, String.Empty, flags, action);
 }
        /// <summary>
        /// Method for adding a new commandline argument with specified parameters.
        /// </summary>
        /// <param name="name">The short name.</param>
        /// <param name="longName">The long name.</param>
        /// <param name="description">The description.</param>
        /// <param name="paramName">Name of the param.</param>
        /// <param name="flags">The flags.</param>
        /// <param name="action">The action.</param>
        /// <param name="requiredPosition">Required position; -1 if not required at a specific position</param>
        protected virtual void DoAddOption(string name, string longName, string description, string paramName, CommandlineOptionFlags flags,
                                           Action <BaseCommandlineParser, string> action, int requiredPosition = int.MaxValue)
        {
            // Check if the parameters are valid

            if (!ValidateOptionName(name))
            {
                throw new ArgumentException("Invalid value.", "name");
            }

            if (!string.IsNullOrEmpty(longName) && !ValidateOptionName(longName))
            {
                throw new ArgumentException("Invalid value.", "longName");
            }

            if (requiredPosition < 0)
            {
                throw new ArgumentOutOfRangeException("requiredPosition", "Value should be >= 0");
            }

            if (requiredPosition != int.MaxValue)
            {
                if (Options.FirstOrDefault(a => a.RequiredPosition == requiredPosition) != null)
                {
                    throw new ArgumentException("Value alreay exists.", "requiredPosition");
                }

                if (flags.HasAny(CommandlineOptionFlags.HasParameter))
                {
                    throw new ArgumentException("Required position option cannot have a parameter.", "paramName");
                }
            }

            // Add a new option to the available options list
            Options.Add(new CommandlineOption
            {
                Name             = name,
                LongName         = longName,
                Description      = description,
                ParameterName    = paramName,
                Flags            = flags,
                Action           = action,
                RequiredPosition = requiredPosition
            });
        }
        /// <summary>
        /// Method for adding a new commandline argument with specified parameters.
        /// </summary>
        /// <param name="name">The short name.</param>
        /// <param name="longName">The long name.</param>
        /// <param name="description">The description.</param>
        /// <param name="paramName">Name of the param.</param>
        /// <param name="flags">The flags.</param>
        /// <param name="action">The action.</param>
        /// <param name="requiredPosition">Required position; -1 if not required at a specific position</param>
        protected virtual void DoAddOption(string name, string longName, string description, string paramName, CommandlineOptionFlags flags,
            Action<BaseCommandlineParser, string> action, int requiredPosition = int.MaxValue)
        {
            // Check if the parameters are valid

              if (!ValidateOptionName(name))
            throw new ArgumentException("Invalid value.", "name");

              if (!string.IsNullOrEmpty(longName) && !ValidateOptionName(longName))
            throw new ArgumentException("Invalid value.", "longName");

              if (requiredPosition < 0)
            throw new ArgumentOutOfRangeException("requiredPosition", "Value should be >= 0");

              if (requiredPosition != int.MaxValue)
              {
            if (Options.FirstOrDefault(a => a.RequiredPosition == requiredPosition) != null)
              throw new ArgumentException("Value alreay exists.", "requiredPosition");

            if (flags.HasAny(CommandlineOptionFlags.HasParameter))
              throw new ArgumentException("Required position option cannot have a parameter.", "paramName");
              }

              // Add a new option to the available options list
              Options.Add(new CommandlineOption
                      {
                        Name = name,
                        LongName = longName,
                        Description = description,
                        ParameterName = paramName,
                        Flags = flags,
                        Action = action,
                        RequiredPosition = requiredPosition
                      });
        }
 public void AddOption(string name, string longName, string description, string paramName, CommandlineOptionFlags flags,
     Action<BaseCommandlineParser, string> action, int requiredPosition = int.MaxValue)
 {
     DoAddOption(name, longName, description, paramName, flags, action, requiredPosition);
 }
 /// <summary>
 /// Method for adding a new commandline argument with specified parameters.
 /// </summary>
 /// <param name="name">The short name.</param>
 /// <param name="longName">The long name.</param>
 /// <param name="description">The description.</param>
 /// <param name="flags">The flags.</param>
 /// <param name="action">The action.</param>
 public void AddOption(string name, string longName, string description, CommandlineOptionFlags flags,
     Action<BaseCommandlineParser, string> action)
 {
     DoAddOption(name, longName, description, String.Empty, flags, action);
 }