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

时间:2016-03-08 16:05:16

标签: command-line-parser

gsscoder编写了一个用于C#的CommandLine解析器库(它有自己的SO标签,我正在添加它)。它以myprogram --foo --bar=baz abc def ghi 样式解析命令行选项,即:

abc

它还可以具有所谓的“未绑定”参数,即不受选项约束的独立位置参数;在上面的示例中,这些是defghi和{{1}}。不幸的是,the documentation只提到“解析器有办法处理这些问题”,但没有给出一个例子。而且我的C#并不那么尖锐,所以我被扫描的源代码量吓到了。

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

1 个答案:

答案 0 :(得分:5)

使用ValueList[Attribute](请参阅docs on CodePlex):

  

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

     

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

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

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

ValueList

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