如何访问CommandLine Parsed <t>的Value属性?

时间:2018-04-08 16:00:28

标签: c# command-line-parser

如何访问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属性???

1 个答案:

答案 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>