commandlineparser / commandlineparser/commandline

"InvalidOperationException: appears to be Immutable with invalid constructor" when suppling invalid (throwable) args

Offen
#734 3 Kommentare 10 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C#
Sterne
4.8k
Forks
478
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

# Description

When calling constructor with single string, if the constructor throws - the result of parsing is also throwing (misleading) exception instead of returning error lambda.

# Minimal reproducable code:

````csharp
using System;
using System.Globalization;
using CommandLine;

class Program
{
[Verb("test")]
public class Options
{
private CultureInfo _localization;

[Option('l', "lang", Required = true, Default = "en")]
public CultureInfo Localization => _localization;

public Options(CultureInfo localization)
{
_localization = localization;
}

}

static void Main(string[] args)
{
var types = new Type[] { typeof(Options) };
var result = Parser.Default.ParseArguments(args, types);
result
.WithParsed(obj => {})
.WithNotParsed(errs => {});
}
}
````

Call with: `test -l "FooBar"`

# Expected behaviour

The `WithNotParsed` lambda should be called with error message pointing to invalid argument

# Actual behaviour

The line with `var result = Parser.Default.ParseArguments(args, types);` throws:

`System.InvalidOperationException: 'Type Program+Options appears to be Immutable with invalid constructor. Check that constructor arguments have the same name and order of their underlying Type. Constructor Parameters can be ordered as: '(localization)''`

# Additional info:

When called with `test -l "en-US"` the code will correctly enter `WithParsed` lambda.

# Version data:

- Tested on Windows / .NET Framework 4.7.2
- Tested on version 2.8.0 from NuGet of CommandLineParser

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

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