Я использую 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 и все будет хорошо. Однако я также ожидал, что будет выброшено исключение OptionException, если я передам аргумент, который не соответствует моему списку, например --someOtherArg
. Но этого не происходит. Парсер просто игнорирует это и продолжает работать.
Есть ли способ обнаружить непредвиденные аргументы с помощью NDesk.Options?