private void ProcessShortArguments(MemberInfo info, ArgumentHandler ai)
 {
     foreach (ShortArgument sa in info.GetCustomAttributes(typeof(ShortArgument), true))
     {
         var an = sa.Arg;
         if (shorts.ContainsKey(an))
         {
             throw new ProgrammingError(String.Format("Duplicate short argument {0}", an));
         }
         shorts.Add(an, ai);
     }
 }
 internal RequiredOptionMissingException(ArgumentHandler aOption)
   : this(String.Format(CultureInfo.CurrentCulture, "Required option {0} wasn't specified", aOption.Name.ToLower()))
 {
 }
        private void ProcessAliases(MemberInfo info, ArgumentHandler ai)
        {
            foreach (ArgumentAlias alias in info.GetCustomAttributes(typeof(ArgumentAlias), true))
            {
                var an = alias.Alias;
                if (opts.CaseType == ArgumentCaseType.Insensitive || opts.CaseType == ArgumentCaseType.OnlyLower)
                {
                    an = an.ToLower();
                }
                if (longs.ContainsKey(an))
                {
                    throw new ProgrammingError(String.Format("Duplicate alias argument {0}", an));
                }
                longs.Add(an, ai);
            }

            foreach (ShortArgumentAlias sa in info.GetCustomAttributes(typeof(ShortArgumentAlias), true))
            {
                var an = sa.Alias;
                if (shorts.ContainsKey(an))
                {
                    throw new ProgrammingError(String.Format("Duplicate short argument {0}", an));
                }
                shorts.Add(an, ai);
            }
        }
 private static void UpdateHandler(ArgumentHandler handler, string value, string arg)
 {
     try
     {
         handler.Assign(value);
     }
     catch (ArgumentException ex)
     {
         throw new ProgrammingError(ex.Message);
     }
     catch (NotSupportedException ex)
     {
         throw new InvalidValueException(String.Format(CultureInfo.CurrentCulture, "Wrong value type for argument \"{0}\": {1}", arg, ex.Message));
     }
     catch (GetOptException)
     {
         throw;
     }
     catch (TargetInvocationException ex)
     {
         if (ex.InnerException is GetOptException)
         {
             throw ex.InnerException;
         }
         if (ex.InnerException is NotSupportedException)
         {
             throw new InvalidValueException(String.Format(CultureInfo.CurrentCulture, "Wrong value type for argument \"{0}\": {1}", arg, ex.Message));
         }
         throw new ProgrammingError(ex.Message);
     }
     catch (Exception ex)
     {
         throw new ProgrammingError(ex.Message);
     }
 }