4

使用Command Line Parser Library,有没有办法标记一组说 3 个选项并准确地制作所需的三个选项之一?

所以有这些选择:

[Option("list-plugins", MutuallyExclusiveSet = "Commands")]
public bool ListPLugins { get; set; }

[Option("list-languages", MutuallyExclusiveSet = "Commands")]
public bool ListLanguages { get; set; }

[OptionList('f', "files", ',', MutuallyExclusiveSet = "Commands")]
public IList<string> Files { get; set; }

我希望用户一次只能使用一个。

IE 有效调用将包括具有以下选项之一的调用 "MyProgram --files a.txt""MyProgram --list-languages""MyProgram --list-plugins"

while 调用没有或使用多个选项:( "MyProgram"这种情况是我的问题),"MyProgram --files a.txt --list-languages"并且"MyProgram --list-languages --list-plugins"将是无效的。

4

1 回答 1

2

@PHeiberg,您已将所有选项放入集合中Commands,如此处所述是正确

这样你就告诉解析器:嘿,让用户选择其中一个!.

如果添加绑定到另一个集合的另一个选项:

[Option MutuallyExclusiveSet = "Other"]
public int Offsets { get; set; }

您可以根据需要指定它,但Commandsset 中的选项是互斥的。

根据实际设计,您所要求的仍然不存在(但可以实现)。

也就是说,我们知道存在一个Required属性以及它是如何关联的?

如果您将 aRequired = true应用于多个选项之一,那么您(在实际实现中)与您自己相矛盾并使解析器感到困惑。

随意打开一个问题。

实际实现支持动词命令。请注意,动词命令在设计上是互斥的,您必须查看一个(您想要的选项行为)。

也许这不完全是你想要的,反正这里是描述here

于 2013-03-04T19:49:05.690 回答