C# 使用命令行解析器库标记必需集必需

C# 使用命令行解析器库标记必需集必需,c#,command-line,command-line-arguments,command-line-parser,C#,Command Line,Command Line Arguments,Command Line Parser,使用,是否有一种方法来标记一组(比如说3个)选项,并在所需的三个选项中选择一个 因此,有这些选择: [Option("list-plugins", MutuallyExclusiveSet = "Commands")] public bool ListPLugins { get; set; } [Option("list-languages", MutuallyExclusiveSet = "Commands")] public bool ListLanguages { get; set; }

使用,是否有一种方法来标记一组(比如说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; }
[选项(“列出插件”,MutuallyExclusiveSet=“命令”)]
公共bool列表插件{get;set;}
[选项(“列出语言”,MutuallyExclusiveSet=“命令”)]
公共布尔列表语言{get;set;}
[OptionList('f','files',',','MutuallyExclusiveSet=“Commands”)]
公共IList文件{get;set;}
我希望用户一次只能使用一个

也就是说,有效通话将包括仅包含以下选项之一的通话:
“MyProgram--files a.txt”
“MyProgram--list languages”
“MyProgram--list plugins”

而不带或带多个选项的通话:
“MyProgram”
(这种情况是我的问题),
“MyProgram--files a.txt--list languages”
“MyProgram--list languages--list plugins”
将无效。

@PHeiberg, 您已将所有选项放在集合
命令中,这是正确的,如所述

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

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

[Option MutuallyExclusiveSet = "Other"]
public int Offsets { get; set; }
如果需要,您可以指定它,但是
命令
集中的选项是互斥的

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

尽管如此,我们知道存在一个
Required
属性,它是如何关联的

如果将
Required=true
应用于多个选项中的一个,则(在实际实现中)会自相矛盾,并且会混淆解析器

随时打开一个问题

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


也许这并不完全是你想要的,不管怎样这里描述了。

谢谢。我也是这样理解的。我认为动词命令结构并不适合这种情况,因为程序只有一个实际命令,另外两个是帮助的变体。我有一些其他办法的想法。当我有更多的时间时,我会提出一个问题。