/// <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();
            }