6

如何访问 CommandLine Parsed 的 Value 属性?

尝试使用CommandLineParser

Parsing的 wiki 部分说 T 的实例可以通过Value属性访问...... 如果解析成功,您将获得一个派生的 Parsed 类型,该类型通过其 Value 属性公开 T 的实例。

但是我看不到任何Value财产parserResult,只有Tag...

ParserResult<Options> parserResult = Parser.Default.ParseArguments<Options>(args);
WriteLine(parserResult.Tag);

而且我知道我错过了一些东西,就好像我在调试一样,我可以看到Value属性???

4

1 回答 1

8

要获取已解析的对象(或解析失败时的错误),您可以执行以下操作:

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>
于 2018-04-08T16:25:20.567 回答