Open zackmark29 opened 2 years ago
At the moment it is not possible.
However I feel like you could get very close using enum
's.
Example:
public enum TestEnum
{
Value1,
Value2,
Value3,
}
public class Options
{
public TestEnum MyEnum { get; set; }
}
parser.Configure(opt => opt.MyEnum)
.Name("e");
> Example.exe -e "Value2"
> MyEnum=Value2
> Example.exe -e "Value10"
> Unable to parse option '-e|--e' value 'value10' is invalid!
Another way to achieve this without enums would be to use FluentValidations Extension.
At the moment it is not possible.
However I feel like you could get very close using
enum
's.Example:
public enum TestEnum { Value1, Value2, Value3, } public class Options { public TestEnum MyEnum { get; set; } } parser.Configure(opt => opt.MyEnum) .Name("e");
> Example.exe -e "Value2" > MyEnum=Value2
> Example.exe -e "Value10" > Unable to parse option '-e|--e' value 'value10' is invalid!
Another way to achieve this without enums would be to use FluentValidations Extension.
Thank you for the response. Yeah Enum is good idea I'll do it instead. I still preferred your extension it's easy to use :)
Thank you that solved my problem. However there's just little problem when I set the default and input invalid value, It's not throwing the exception but still getting the default value only. But it's ok I just skip the default value
I do like the choices idea.
API could look something like this:
IOptionsBuilder<T> Choices(IEnumerable<T> choices);
parser.Configure(opt => opt.SomeOption)
.Choices(new []{ 1, 2, 3 });
Not sure how this would work when the option type is a Collection
.
I can't seem find any in the documentation about choices option. Like in python there is choices option in the argument. Is it possible to do with this great extension?