gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:09:50 25 4
gpt4 key购买 nike

我正在使用 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 检测意外的参数?

最佳答案

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;

关于c# - NDesk.Options - 检测无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10816728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com