使用 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" 将无效。

最佳答案

@PHeiberg,
您已将所有选项放入集合 Commands 中,这与描述 here 是正确的。

通过这种方式,您告诉解析器:嘿,让用户选择其中之一!

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

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

如果需要,您可以指定它,但 Commands 集中的选项是互斥的。

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

说了这么多,我们知道存在一个 Required 属性和它有什么关系?

如果您将 Required = true 应用于更多选项之一,您(在实际实现中)会与您的自我相矛盾并混淆解析器。

随意打开一个问题。

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

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

关于c# - 使用命令行解析器库标记所需的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15208798/

10-12 02:17