Browse Source

Enumerate over Enum.GetNames to ensure equal value names are not excluded.

pull/344/head
AntiTcb 8 years ago
parent
commit
1d20029c7b
1 changed files with 6 additions and 4 deletions
  1. +6
    -4
      src/Discord.Net.Commands/Readers/EnumTypeReader.cs

+ 6
- 4
src/Discord.Net.Commands/Readers/EnumTypeReader.cs View File

@@ -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}"));
}
}
}


Loading…
Cancel
Save