代码之家  ›  专栏  ›  技术社区  ›  SteveC

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

  •  6
  • SteveC  · 技术社区  · 8 年前

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

    正在尝试使用 CommandLineParser

    上的wiki部分 Parsing 表示可以通过 Value 所有物 如果解析成功,您将获得一个派生的已解析类型,该类型通过T的Value属性公开T的实例。

    但我什么都看不到 价值 上的属性 parserResult ,仅a Tag 。。。

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

    我知道我遗漏了一些东西,就像我调试一样,我可以看到 价值 所有物

    1 回复  |  直到 8 年前
        1
  •  8
  •   Evk    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>