我正在使用CommandLineParser。当我基于单个动词解析参数时,它就起作用了。我的动词被识别,命令开始运行。
Parser.Default.ParseArguments<FirstOperation>(args)
.MapResult(
(FirstOperation operation) => RunCommand(operation)
(IEnumerable<Error> errs) => ProcessError(errs));
但是,我的程序有几个用户可能输入的动词。当我尝试为第二个动词实现解析器时,使用CommandLine.BadVerbSelectedError调用ProcessError。
Parser.Default.ParseArguments<FirstOperation, SecondOperation>(args)
.MapResult(
(FirstOperation operation) => RunCommand(operation),
(SecondOperation operation) => RunCommand(operation),
(IEnumerable<Error> errs) => ProcessError(errs));
此外,写到输出的帮助不包括我的两个动词。似乎实现第二个动词选项似乎以某种方式摆脱了解析器的所有动词信息。我执行不正确吗?我按照位于here的示例进行操作。
请注意,我为两个实例都提供了相同的输入。因此,我认为我的问题不在于第二个动词(SecondOperation)的勇气。
答案 0 :(得分:0)
我会建议你使用以下格式:
Parser.Default.ParseArguments<FirstOperation, SecondOperation>(args).WithParsed<FirstOperation>(f => f.Dojob()).WithParsed<SecondOperation>(s => s.Dojob()).
我将我的工作声明为动词类的方法,但是 你可以传递一个委托而不是 lambda 并且只使用属性。