5

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

myprogram --foo --bar=baz abc def ghi

它还可以具有所谓的“未绑定”参数,即不绑定到选项的独立位置参数;在上面的示例中,它们是abcdefghi。不幸的是,文档只提到“解析器有办法处理这些”,但没有给出示例。而且我的 C# 不是那么敏锐,所以我被大量的源代码吓倒了,要扫描它才能找到它。

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

4

1 回答 1

6

使用ValueList[Attribute](参见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. 构造函数必须接受从IList<string>as派生的类型List<string>
  3. 如果该MaximumElements属性设置为大于 0 的数字,则如果超出限制,解析器将失败。
  4. 设置MaximumElements为 0 意味着您不接受与选项无关的值。
  5. (-1)的默认隐式设置MaximumElements允许无限数量的值。
于 2016-05-27T18:37:48.877 回答