gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:36:54 25 4
gpt4 key购买 nike

使用 Command Line Parser Library并且有一个带有默认值的列表或数组,默认值打印为(默认值:System.String [])。有什么办法让它显示实际的默认值吗?

所以

[OptionList('l', "languages", Separator = ',', DefaultValue = new []{"eng"})]
public IList<string> Languages { get; set; }

帮助文本打印为 "(Default: System.String[]) ..."。我希望它说 "(Default: { "eng"})"

最佳答案

HelpText 因使用针对 DefaultValue 的通用格式化函数而受到影响。

问题出在(引用最新稳定版)HelpText.cs 的第 702 行:

if (option.HasDefaultValue)
{
option.HelpText = "(Default: {0}) ".FormatLocal(option.DefaultValue) + option.HelpText;
}

当前的开发分支(我认为可用)用 new helper private method 解决了它(也从测试的角度介绍):

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

有关其稳定性以及首次发布后如何更改的信息,请参阅 here .

按照这个说明应该很容易也可以修补当前稳定的分支。

关于c# - 使用命令行解析器库的列表/数组的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15208931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com