3

使用Command Line Parser Library,是否有一种方法可以标记一组说明3选项并使其成为所需的三个选项之一?CommandLine解析器库所需的标记所需的集合

因此,有下列选项:

[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; } 

我想用户只能够使用完全相同一次一个。

I.E.有效通话将包括的选项只有一个电话: "MyProgram --files a.txt""MyProgram --list-languages""MyProgram --list-plugins"

,而没有或选项倍数电话: "MyProgram"(这里指的是我的问题),"MyProgram --files a.txt --list-languages""MyProgram --list-languages --list-plugins"将是无效的。

回答

2

@PHeiberg, 您已将所有选项放入集合Commands之内,这与描述here正确无误。

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

如果添加绑定到另一个组的另一种选择:

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

您可以,如果要指定,但在Commands设置的选项是互斥的。

通过实际的设计,你问的东西仍然不存在(但可以实施)。

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

如果您将Required = true应用于其中一个选项(在实际实现中),这与您的自我相矛盾并使解析器混淆不清。

随意打开一个问题。

实际执行支持动词命令。请注意,动词命令在设计上是相互排斥的,你必须偷看它(你想要的选项行为)。

也许这不完全是你想要的,无论如何这里描述的是here

+0

谢谢。这也是我的理解。我认为动词命令结构不适合这种情况,因为程序只有一个实际的命令,而另外两个是帮助的变体。否则,我有一些关于如何去做的想法。当我有更多时间时,我会开一个问题。 – PHeiberg 2013-03-04 20:03:29