加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – NDesk.Options – 检测无效参数

发布时间:2020-12-15 04:10:43 所属栏目:百科 来源:网络整理
导读:我使用 NDesk.Options来解析C#命令行程序的命令行参数.它工作正常,除了我希望我的程序退出失败,并显示帮助输出,如果用户包含我没想到的参数. 我正在解析选项: var options = new OptionSet { { "r|reset","do a reset",r = _reset = r != null },{ "f|filte
我使用 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 without = myfilter,则NDesk.Options将抛出OptionException,一切都会好的.但是,如果我传入一个与我的列表不匹配的参数,我也期望抛出一个OptionException,例如–someOtherArg.但这不会发生.解析器只是忽略了它并继续卡车运输.

有没有办法用NDesk.Options检测意外的args?

解决方法

OptionSet.Parse方法返回List< string>中无法识别的选项.您可以使用它来报告未知选项.
try
{
    var unrecognized = options.Parse(args);
    if (unrecognized.Any())
    {
        foreach (var item in unrecognized) 
            Console.WriteLine("unrecognized option: {0}",item);
        _showHelp = true;
        return false;
    }
}
catch (OptionException)
{
    _showHelp = true;
    return false;
}
return true;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读