命令行解析器动词无法识别
Posted
技术标签:
【中文标题】命令行解析器动词无法识别【英文标题】:CommandLine Parser verb not recognized 【发布时间】:2022-01-09 23:12:05 【问题描述】:我正在使用命令行解析器来解析 2 个动词。这是一个代码sn-p:
[Verb("Option1")]
public class VerbOption1
[Option('o', "option1")]
public string Option1 get; set;
[Verb("Option2")]
public class VerbOption2
[Option('t', "option2")]
public string Option2 get; set;
Parser.Default.ParseArguments<VerbOption1, VerbOption2>(args)
.WithParsed<VerbOption1>(option1 => doSomething(option1))
.WithParsed<VerbOption2>(option2 => doSomethingElse(option2));
我遇到的问题是我收到一条错误消息,指出无法识别动词“x”。如果我只使用 1 个动词,那么它可以工作。但是,一旦我添加第二个动词,我就会收到此错误。
谁能帮助澄清发生了什么以及如何解决此错误?
我们将不胜感激。
谢谢
【问题讨论】:
我可能会离开,但是您检查过github.com/commandlineparser/commandline 上的示例吗?它使用 MapResult 方法:CommandLine.Parser.Default.ParseArguments(args) .MapResult( (AddOptions opts) => RunAddAndReturnExitCode(opts), (CommitOptions opts) => RunCommitAndReturnExitCode(opts), (CloneOptions opts) => RunCloneAndReturnExitCode(opts), errs => 1); 我查看了文档,但是,问题在于对 ParseArguement 的调用。为了使用 MapResult,ParseArguement 必须返回一个已解析的对象,而事实并非如此。在我调用 MapResult 之前,它失败了,动词无法识别。 您能否也包括您的“动词”的代码? VerbOption1 和 VerbOption2 好!你可以为你的问题写一个正确的答案,而不是把它放在 cmets 中。 【参考方案1】:我发现了这个问题。确保分配给类的动词属性具有名称。在命令行中使用该名称,后跟您的选项。这对我来说是个问题。我正在使用命令行,就像我仍在处理单个动词一样,因此省略了动词名称。解析多个动词时需要动词名。
【讨论】:
以上是关于命令行解析器动词无法识别的主要内容,如果未能解决你的问题,请参考以下文章