【问题标题】:How can you access the Value property of a CommandLine Parsed<T>?如何访问命令行 Parse<T> 的 Value 属性?
【发布时间】:2018-04-08 16:00:27
【问题描述】:

如何访问 CommandLine Parsed 的 Value 属性?

尝试使用CommandLineParser

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

但我在parserResult 上看不到任何Value 属性,只有Tag ...

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

而且我知道我在调试时遗漏了一些东西,我可以看到Value 属性???

【问题讨论】:

  • 我猜你需要转换,然后你就有了 here 的值。
  • @NicoSchertler 感谢您的回复,但您能否提供实际代码,因为我不明白怎么做???

标签: c# command-line-parser


【解决方案1】:

要获取已解析的对象(或解析失败时的错误),您可以这样做:

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>

【讨论】:

  • 谢谢你,这对我来说也不是很明显!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
相关资源
最近更新 更多