public static string ToCommandLineParameters(this ICommandLineParameter obj)
        {
            var parameters = obj.GetType()
                             .GetProperties()
                             .Select(p => OptionsPropertyToCommandLineParameter(p, p.GetValue(obj)))
                             .Where(p => !string.IsNullOrEmpty(p));

            return(string.Join(" ", parameters).Trim());
        }
        public static void PrintCommandLineParamsInfo(ICommandLineParameter[][] setOfSequencesOfCommandLineParameters)
        {
            FileInfo exeFileInfo = new FileInfo(Assembly.GetEntryAssembly().Location);

            StringBuilder stringBuilder = new StringBuilder();
            foreach (ICommandLineParameter<string>[] sequenceOfCoCommandLineParameters in setOfSequencesOfCommandLineParameters)
            {
                stringBuilder.Append(exeFileInfo.Name).Append(" ");
                foreach (ICommandLineParameter<string> commandLineParameter in sequenceOfCoCommandLineParameters)
                {
                    stringBuilder.Append(commandLineParameter.BuildExample()).Append("");
                    if (stringBuilder.Length > 0)
                    {
                        stringBuilder.Append(" ");
                    }
                }
                stringBuilder.AppendLine();
            }

            ConsoleExtensions.WriteInfo(stringBuilder.ToString());
        }