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を使用して予期しない引数を検出する方法はありますか?