【发布时间】: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 中。
标签: c# .net-core command-line-parser