如何访问命令行解析 <T> 的值 属性?

How can you access the Value property of a CommandLine Parsed<T>?

如何访问已解析命令行的值 属性?

正在尝试使用 CommandLineParser

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

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

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

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

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

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>