如何通过gsscoder访问C#CommandLine Parser中的未绑定参数?

Mik*_*hin 5 command-line-parser

有一个由gsscoder编写的C#的CommandLine解析器库(它有自己的SO标签,我正在添加它).它以getopt样式解析命令行选项,即:

myprogram --foo --bar=baz abc def ghi
Run Code Online (Sandbox Code Playgroud)

它还可以具有所谓的"未绑定"参数,即不受选项约束的独立位置参数; 在以上这些的例子是abc,def,和ghi.不幸的是,文档只提到"解析器有办法处理这些",但没有给出一个例子.而且我的C#并不那么尖锐,所以我被扫描的源代码量吓到了.

有人可以举一个解析后如何访问这些未绑定参数的例子吗?

rus*_*ssa 6

使用ValueList[Attribute](参见CodePlex上的文档):

选项未捕获的每个值都可以包含在从System.Collections.Generic.IList派生的字符串集合中.

显然,此属性没有名称,并且直接从System.Attribute派生. 它是目前唯一的例外,但并不排除将来它会有相似之处.

示例(来自上面链接的页面):

class Options
{
  // ...
  [ValueList(typeof(List<string>), MaximumElements = 3)]
  public IList<string> Items { get; set; };
  // ...
}
Run Code Online (Sandbox Code Playgroud)

在哪里 ValueList

  1. 必须分配给类型的属性IList<string>.
  2. 构造函数必须接受从IList<string>as 派生的类型List<string>.
  3. 如果MaximumElements属性设置为大于0的数字,则超出限制时解析器将失败.
  4. 设置MaximumElements为0表示您不接受与选项取消关联的值.
  5. MaximumElements(-1)的默认隐式设置允许无限数量的值.