Wie erzwinge ich die erforderlichen Befehlszeilenoptionen mit NDesk.Options?

Ich habe gerade ein Konsolendienstprogramm geschrieben und mich für die Verwendung von NDesk.Options zum Parsen der Befehlszeile entschieden. Meine Frage lautet: Wie erzwinge ich die erforderlichen Befehlszeilenoptionen?

Ich sehe in der docs Das

Optionen mit einem erforderlichen Wert (Anhängen von '=' an den Optionsnamen) oder einem optionalen Wert (Anhängen von ':' an den Optionsnamen).

Allerdings, wenn ich ein @ setz= am Ende des Optionsnamens gibt es keinen Unterschied im Verhalten. Im Idealfall würde die Parse-Methode eine Ausnahme auslösen.

Gibt es noch etwas, was ich tun muss?

Hier ist mein Testcode:

class Program
{
    static void Main(string[] args)
    {
        bool show_help = false;
        string someoption = null;

        var p = new OptionSet() {
            { "someoption=", "Some String Option", v => someoption = v},
            { "h|help",  "show this message and exit", v => show_help = v != null }
        };

        List<string> extra;
        try
        {
            extra = p.Parse(args);
        }
        catch (OptionException e)
        {
            System.Console.Write("myconsole: ");
            System.Console.WriteLine(e.Message);
            System.Console.WriteLine("Try `myconsole --help' for more information.");
            return;
        }

        if (show_help)
        {
            ShowHelp(p);
            return;
        }

        System.Console.WriteLine("==================");
        System.Console.WriteLine(someoption);
    }

    static void ShowHelp(OptionSet p)
    {
        System.Console.WriteLine("Usage: myconsole [OPTIONS]");
        System.Console.WriteLine();
        System.Console.WriteLine("Options:");
        p.WriteOptionDescriptions(System.Console.Out);
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage