使用 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/