gsscoder编写了一个用于C#的CommandLine解析器库(它有自己的SO标签,我正在添加它)。它以myprogram --foo --bar=baz abc def ghi
样式解析命令行选项,即:
abc
它还可以具有所谓的“未绑定”参数,即不受选项约束的独立位置参数;在上面的示例中,这些是def
,ghi
和{{1}}。不幸的是,the documentation只提到“解析器有办法处理这些问题”,但没有给出一个例子。而且我的C#并不那么尖锐,所以我被扫描的源代码量吓到了。
有人可以举例说明解析后如何访问这些未绑定的参数吗?
答案 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
- 必须分配给
IList<string>
类型的媒体资源。- 构造函数必须接受从
IList<string>
派生的类型为List<string>
。- 如果
MaximumElements
属性设置为大于0的数字,则超出限制时解析器将失败。- 将
MaximumElements
设置为0表示您不接受与选项无关的值。- 醇>
MaximumElements
( - 1)的默认隐式设置允许无限数量的值。