dotnet / dotnet/command-line-api
Using HashSet<string> as Option Type throws ArgumentException
- Dominant language
- C#
- Stars
- 3.7k
- Forks
- 428
- PR merge metrics
- No merged PRs in 30d
Description
When using a `HashSet` in e.g. the Main Method when using DragonFruit:
```csharp
class Program
{
static int Main(
bool verbose,
HashSet values,
string flavor = "chocolate",
int count = 1)
```
an Exception is thrown
```
Unhandled exception: System.ArgumentException: Object of type 'System.Collections.Generic.List`1[System.String]' cannot be converted to type 'System.Collections.Generic.HashSet`1[System.String]'.
at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast)
at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at System.CommandLine.Invocation.ModelBindingCommandHandler.InvokeAsync(InvocationContext context) in C:\Projects\command-line-api\src\System.CommandLine\Invocation\ModelBindingCommandHandler.cs:line 76
```
Should it be possible to use `HashSet`? When using `List` no exception is thrown.
Contributor guide
Assessment
This issue has not been assessed yet.