Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Multi instance setting ignored when default verb is parsed.

Offen
#922 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
csharp
Bereich
cli

Rechercherichtung

Beginne damit, das Problem mit dem bereitgestellten ParseArguments- und MapResult-Beispiel zu reproduzieren, insbesondere mit argTest5, und verfolge, wie das Standardverb bei aktiviertem AllowMultiInstance geparst wird. Als erledigt gilt die Aufgabe, wenn das Standardverb wiederholte Optionswerte akzeptiert, ohne die Option als mehrfach definiert zu melden, während die anderen Beispiele weiterhin korrekt geparst werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Describe the bug
When using the function "MapResult" to parse multiple verbs, the parser ignores the setting "AllowMultiInstance" while parsing the default verb.

Lib version: 2.9.1
Language: C#

To Reproduce
Test the following demo code to see the result.

Demo Class Options:

    [Verb("log", isDefault:true, HelpText = "Log command")]
    class LogOptions
    {
        [Option('a', HelpText = "Option A for log command")]
        public IEnumerable<string> OptionA { get; set; }

        [Option('b', HelpText = "Option B for log command")]
        public IEnumerable<string> OptionB { get; set; }
    }

    [Verb("save", HelpText = "Save command")]
    class SaveOptions
    {
        [Option('d', HelpText = "Option D for save command")]
        public IEnumerable<string> OptionD { get; set; }

        [Option('e', HelpText = "Option E for save command")]
        public IEnumerable<string> OptionE { get; set; }
    }

Demo code:

        Parser parser = new(x =>
        {
            x.HelpWriter = Console.Out;
            x.IgnoreUnknownArguments = true;
            x.AllowMultiInstance = true;
            x.AutoHelp = true;
        });

        var argTest1 = "log -a valueA -b valueB" .Split(' ');  // This works.
        var argTest2 = "save -d valueD -e valueE".Split(' ');  // This works.
        var argTest3 = "-a valueA -b valueB".Split(' ');       // This works.
        var argTest4 = "log -a valueA -b valueB -b valueB2".Split(' '); // This works.
        var argTest5 = " -a valueA -b valueB -b valueB2".Split(' ');     // This don't work.


        var res = parser.ParseArguments<LogOptions, SaveOptions>(argTest5).MapResult(
        (LogOptions opts) => ProcessLogCommand(opts),
        (SaveOptions opts) => ProcessSaveCommand(opts),
        errs => 1);
    }

When trying to parse argTest5 this error is shown:

  ERROR(S):
    Option 'b' is defined multiple times.
  
    -a           Option A for log command
  
    -b           Option B for log command
  
    --help       Display this help screen.
  
    --version    Display version information.

Expected behavior
Option "SaveOptions" correctly parsed with multiple arguments for argument b.

Vorherrschende Sprache
C#
Sterne
4.8k
Forks
478
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus commandlineparser/commandline

Alle Issues in commandlineparser/commandline

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.