HelpText遭受了對DefaultValue使用通用格式功能的困擾。
的問題是702 HelpText.cs的線(裁判最新的穩定。):
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。
有了這個指示,應該也很容易也能修補一個當前穩定的分叉。
來源
2013-03-05 08:45:01
jay
解析按預期發生?幫助問題是否正確?如果是的話,這可能是一個問題。但我會調查更多。 – jay 2013-03-04 19:55:27
正確。解析是成功的,但列出該值的幫助文本不是很有幫助。通過代碼判斷ToString是在'HelpText :: AddOption'內的值上調用的,它調用'StringExtensions:FormatLocal'。 – PHeiberg 2013-03-04 19:59:16
@jay - 爲了解決這個問題,我想在'AddOption'方法中必須有一個檢查,它將幫助文本格式化爲列表,如果它是基本類型的IEnumerable實例的話。 – PHeiberg 2013-03-04 20:05:37