Enumerate over Enum.GetNames to ensure equal value names are not excluded.
This commit is contained in:
@@ -32,10 +32,12 @@ namespace Discord.Commands
|
||||
var byNameBuilder = ImmutableDictionary.CreateBuilder<string, object>();
|
||||
var byValueBuilder = ImmutableDictionary.CreateBuilder<T, object>();
|
||||
|
||||
foreach (var v in Enum.GetValues(_enumType))
|
||||
foreach (var v in Enum.GetNames(_enumType))
|
||||
{
|
||||
byNameBuilder.Add(v.ToString().ToLower(), v);
|
||||
byValueBuilder.Add((T)v, v);
|
||||
byNameBuilder.Add(v.ToLower(), v);
|
||||
var parsedValue = (T)Enum.Parse(_enumType, v);
|
||||
if (!byValueBuilder.ContainsKey(parsedValue))
|
||||
byValueBuilder.Add(parsedValue, v);
|
||||
}
|
||||
|
||||
_enumsByName = byNameBuilder.ToImmutable();
|
||||
@@ -59,7 +61,7 @@ namespace Discord.Commands
|
||||
if (_enumsByName.TryGetValue(input.ToLower(), out enumValue))
|
||||
return Task.FromResult(TypeReaderResult.FromSuccess(enumValue));
|
||||
else
|
||||
return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, $"Value is not a {_enumType.Name}"));
|
||||
return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, $"Name is not a {_enumType.Name}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user