/// <summary> /// When output the usage, this function will generate the flag string /// Such as "-time n1 n2..." string. /// </summary> /// <param name="argument">Argument attribute.</param> /// <returns>Argument presentation on command line.</returns> private static string GetFlagAndPlaceHolderString(ArgumentAttribute argument) { return (!string.IsNullOrEmpty(argument.OptionName) ? "-" : string.Empty) + argument.OptionName + (string.IsNullOrEmpty(argument.UsagePlaceholder) ? string.Empty : " " + argument.UsagePlaceholder); }
/// <summary> /// Initializes a new instance of the <see cref="Destination"/> class. /// </summary> /// <param name="fieldInfo">Field information.</param> /// <param name="argument">Argument attribute.</param> /// <param name="internalTarget">Internal flags.</param> public Destination(FieldInfo fieldInfo, ArgumentAttribute argument, InternalFlags internalTarget) { _fieldInfo = fieldInfo; _argument = argument; _internalTarget = internalTarget; // _AlreadySaved = false; _parameterList = fieldInfo.FieldType.IsArray ? new ArrayList() : null; }
/// <summary> /// Build optional line string for a argument. /// </summary> /// <param name="argument">Argument attribute.</param> /// <returns>Optional line string.</returns> private static string BuildOptionLine(ArgumentAttribute argument) { StringBuilder sb = new StringBuilder(); if (!argument.Hidden) { if (argument.Optional) { sb.AppendFormat(CultureInfo.InvariantCulture, " [{0}]", GetFlagAndPlaceHolderString(argument)); } else { sb.AppendFormat(CultureInfo.InvariantCulture, " {0}", GetFlagAndPlaceHolderString(argument)); } } else { if (!argument.Optional) { string message = string.Format(CultureInfo.InvariantCulture, "Argument for -{0} can be hidden but can not be optional at the meantime.", argument.OptionName); Debug.Assert(argument.Optional, message); throw new ArgumentException(message); } } return sb.ToString(); }