【发布时间】:2017-03-24 10:55:44
【问题描述】:
我正在开发一个控制台工具,它接受一些参数,然后解析到 Option 类。
我需要一个属性来验证Option 类中的许多标记字段中是否只有一个具有值(已传递参数)。
例如。 运行时没问题:
我的.exe -a
我的.exe -b
但不是:
我的.exe
我的.exe -a -b
CommandLine.OptionAttribute 不能做这样的事情。我所做的是: 主类 args[] 有扩展名 .Parse:
args.Parse(options)` //where options is my Options class
内部:
CommandLine.Parser.Default.ParseArguments(args, options);
var isOnlyOneOfMany = options.GetType().GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(OneOfMany)) && prop.GetValue(options) != null).Count() == 1;
如何更好地做到这一点?
【问题讨论】:
-
CommandLine不是 BCL 类。您使用的是哪个库? -
“如何以更好的方式做到这一点”是什么意思? - 你觉得你目前的方法有什么问题?
-
CommandLine 是一个我可以使用的交付库。我只是想知道这是否是做这种事情的好方法,这并不夸张。
-
什么库? @ŁukaszMioduszewski
-
var isOnlyOneOfMany = args.Length == 1;
标签: c# .net command-line-parser