如何访问CommandLine Parsed的Value属性?
Parsing上的wiki部分说T的实例可以通过Value
属性访问...
如果解析成功,您将获得派生的Parsed类型,该类型通过其Value属性公开T的实例。
但我无法在Value
上看到任何parserResult
属性,只有Tag
...
ParserResult<Options> parserResult = Parser.Default.ParseArguments<Options>(args);
WriteLine(parserResult.Tag);
而且我知道我错过了一些好像我调试的东西,我可以看到Value
属性???
答案 0 :(得分:7)
要获得解析对象(或解析失败时的错误),您可以这样做:
ParserResult<Options> parserResult = Parser.Default.ParseArguments<Options>(args);
if (parserResult.Tag == ParserResultType.Parsed) {
var options = ((Parsed<Options>)parserResult).Value;
}
else {
var errors = ((NotParsed<Options>)parserResult).Errors;
}
这是一个值得怀疑的设计,但总的来说,你不应该这样做,无论如何,预期用法更像是:
Parser.Default.ParseArguments<Options>(args)
.WithParsed(options => ...)
.WithNotParsed(errors => ...)IEnumerable<Error>