C# 使用命令行解析器库的列表/数组的默认值

C# 使用命令行解析器库的列表/数组的默认值,c#,command-line,command-line-arguments,command-line-parser,C#,Command Line,Command Line Arguments,Command Line Parser,使用并拥有具有默认值的列表或数组,默认值将打印为(默认值:System.String[])。有没有办法让它显示实际的默认值 所以 [OptionList('l', "languages", Separator = ',', DefaultValue = new []{"eng"})] public IList<string> Languages { get; set; } [选项列表('l',“语言”,分隔符=',',DefaultValue=new[]{“eng”}] 公共ILi

使用并拥有具有默认值的列表或数组,默认值将打印为(默认值:System.String[])。有没有办法让它显示实际的默认值

所以

[OptionList('l', "languages", Separator = ',', DefaultValue = new []{"eng"})]
public IList<string> Languages { get; set; }
[选项列表('l',“语言”,分隔符=',',DefaultValue=new[]{“eng”}]
公共IList语言{get;set;}

帮助文本打印为
“(默认值:System.String[])…”
。我想说的是
”(默认值:{“eng”})

帮助文本在对DefaultValue使用通用格式函数时遇到的麻烦

问题出现在(参考最新版本)第702行:

当前的开发分支(我认为是可用的)通过以下方法解决了它(也从测试的角度讨论):

要使用最新的开发分支:

git clone -b develop-1.9.8-beta https://github.com/gsscoder/commandline.git commandline-develop
有关其稳定性以及首次发布后如何更改的信息,请参阅


使用此指令还可以轻松修补当前稳定的分支。

解析是否按预期进行?帮助问题对吗?如果是,这可能是一个问题。但我会调查更多的。对。解析成功,但列出该值的帮助文本没有多大帮助。根据代码判断,对
HelpText::AddOption
中的值进行ToString,调用
StringExtensions:FormatLocal
@jay-以修复它,我想必须在
AddOption
方法中进行检查,如果它是基本类型的
IEnumerable
实例,则将帮助文本格式化为列表。谢谢您的提示。在github项目中打开了一个。更新也将发布在这里。仅供参考:2.0.x使用
Default
而不是
DefaultValue
。而且不再需要
选项列表
,只需将
选项
与带值的
分隔符
一起使用,即可确定
IEnumerable
的目标。我想补充一点,这个补丁在2.0.x版本中丢失了(出于各种原因,这里没有人对此感兴趣),实际上它在2.0.223-beta版本中被重新修复(使用起来相当稳定),也可以在上获得。与往常一样,最新的源代码在这里,2.0.x更新的文档在这里。此单元测试演示了修复程序:。
private static string FormatDefaultValue(object value)
{
    if (value is bool)
    {
        return value.ToLocalString().ToLowerInvariant();
    }

    if (value is string)
    {
        return value.ToLocalString();
    }

    var asEnumerable = value as IEnumerable;
    if (asEnumerable != null)
    {
        var builder = new StringBuilder();
        foreach (var item in asEnumerable)
        {
            builder.Append(item.ToLocalString());
            builder.Append(" ");
        }
        return builder.Length > 0 ? builder.ToString(0, builder.Length - 1) : string.Empty;
    }
    return value.ToLocalString();
}
git clone -b develop-1.9.8-beta https://github.com/gsscoder/commandline.git commandline-develop