c# – 使用CommandLineParser报告未知参数
发布时间:2020-12-15 05:38:18 所属栏目:百科 来源:网络整理
导读:有没有办法让 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 LastPa
有没有办法让
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不为null但包含0个元素. LastParserState基本上是从ArgumentParser.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; } 因此,内部解析器不会存储任何有关错误的信息,只记录该事实. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |