NDesk.Options — обнаружение недопустимых аргументов

Я использую 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?

6
задан RationalGeek 30 May 2012 в 12:53
поделиться