【发布时间】:2012-06-04 17:08:41
【问题描述】:
我正在使用NDesk.Options 来解析 C# 命令行程序的命令行参数。它工作正常,但如果用户包含我没想到的参数,我希望我的程序不成功退出并显示帮助输出。
我正在解析选项:
var options = new OptionSet {
{ "r|reset", "do a reset", r => _reset = r != null },
{ "f|filter=", "add a filter", f => _filter = f },
{ "h|?|help", "show this message and exit", v => _showHelp = v != null },
};
try
{
options.Parse(args);
}
catch (OptionException)
{
_showHelp = true;
return false;
}
return true;
使用此代码,如果我不正确地使用参数,例如指定 --filter 后没有 =myfilter,则 NDesk.Options 将抛出 OptionException,一切都会好起来的。但是,如果我传入一个与我的列表不匹配的参数,例如--someOtherArg,我也希望抛出一个 OptionException。但这不会发生。解析器只是忽略了这一点并继续卡车运输。
有没有办法使用 NDesk.Options 检测意外的参数?
【问题讨论】: