commandlineparser / commandlineparser/commandline

unable to set default value using Uri

Open
#708 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
4.8k
Forks
478
PR merge metrics
No merged PRs in 30d

Description

trying to be able to run an app like this:
consoleApp.exe
or
consoleApp.exe http://someOtherUri.invalid:1234

i can get the default value to work using a string:
class Options{
[Value(0,
Default = "http://someUri.invalid:1234"
)]
public string OptionalUri { get;set;}
}

but not using a Uri as its type.
class Options{
[Value(0,
Default = "http://someUri.invalid:1234"
)]
public Uri OptionalUri { get;set;}
}

static void Main(string[] args)
{
CommandLine.Parser.Default.ParseArguments(args)
.WithParsed(Run)
.WithNotParsed(HandleParseError);
}
static void Run(Options options)
{
//Uri u = options.OptionalUri;
Uri u = new Uri(options.OptionalUri); // possible parseerrors, should've been handled in commandlineparser
}

then i get
Error setting value to option '': Check if Option or Value attribute values
are set properly for the given type.

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the issue with the shown Options class, Uri property, Value attribute, and Parser.Default.ParseArguments call. Trace how the parser applies the default string and handles the Uri input; done means the default URI is assigned successfully and invalid URI input produces a parser error instead of requiring manual construction in Run.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.