gpt4 book ai didi

c# - 使用 CommandLineParser 报告未知参数

转载 作者:太空狗 更新时间:2023-10-29 23:32:35 25 4
gpt4 key购买 nike

有什么方法可以使Command Line Parser library报告未知参数?

给定以下选项类:

public class Options
{
[Option('i', "int-option", DefaultValue = 10, HelpText = "Set the int")]
public int IntOption { get; set; }

[ParserState]
public IParserState LastParserState { get; set; }

[HelpOption]
public string GetUsage()
{
return HelpText.AutoBuild(this,
HelpText.DefaultParsingErrorsHandler(this, current));
}
}

以及以下程序:

var options = new Options();
var parser = new Parser(settings =>
{
settings.HelpWriter = Console.Error;
settings.IgnoreUnknownArguments = false;
});

if (parser.ParseArgumentsStrict(args, options))
{
Console.WriteLine("Int value set: {0}", options.IntOption);
}

使用“MyProgram.exe --unknown”调用程序时我只是得到了默认的使用信息,但没有提到是什么错误导致解析失败。我想向用户提供某种指示,告诉他们出了什么问题。

最佳答案

长话短说:使用当前的实现,您无法获得有关未知选项的任何信息。

长话短说:

如果您在 GetUsage 方法中放置一个制动点,您将看到 LastParserState 不为空但包含 0 个元素。

LastParserState 基本上是由 ArgumentParser.PostParsingState 填充的但是LongOptionParser(在您的情况下,由于 -- 双破折号而涉及)没有向其解析方法中的 PostParsingState 集合添加任何内容:

来源自Github :

var parts = argumentEnumerator.Current.Substring(2).Split(new[] { '=' }, 2);
var option = map[parts[0]];

if (option == null)
{
return _ignoreUnkwnownArguments ? PresentParserState.MoveOnNextElement :
PresentParserState.Failure;
}

因此在内部,解析器不会存储任何有关出错的信息,只是记录该事实。

关于c# - 使用 CommandLineParser 报告未知参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15189849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com