使用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; }
我希望用户一次只能使用一个。
即。有效的调用将包括具有以下一个选项的调用:
"MyProgram --files a.txt"
,"MyProgram --list-languages"
和"MyProgram --list-plugins"
在没有或有多个选项的情况下调用:
"MyProgram"
(此案例是我的问题),"MyProgram --files a.txt --list-languages"
和"MyProgram --list-languages --list-plugins"
无效。
答案 0 :(得分:2)
@PHeiberg,
您已将所有选项放在集Commands
中,这与描述here一样正确。
通过这种方式,你告诉解析器:嘿,让用户选择其中一个!。
如果您添加另一个绑定到另一个集合的选项:
[Option MutuallyExclusiveSet = "Other"]
public int Offsets { get; set; }
如果需要,您可以指定它,但Commands
集中的选项是互斥的。
根据实际设计,您提出的要求仍然不存在(但可以实施)。
说,我们知道存在Required
属性及其相关性?
如果你将Required = true
应用于一个或多个选项,那么(在实际实现中)与你的自我相矛盾并使解析器感到困惑。
随意打开一个问题。
实际实现支持动词命令。请注意,动词命令在设计上是互斥的,你要偷看一个(你想要的选项行为)。
也许这不是你想要的,无论如何这里都描述了here。