Skip to content

Commit

Permalink
Fixed EnumCacheManager not supporting non-int type
Browse files Browse the repository at this point in the history
  • Loading branch information
Metious committed Nov 18, 2022
1 parent f02f116 commit cadd60f
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions SMLHelper/Utility/EnumCacheManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ internal class EnumCacheManager<T> where T : Enum
{
private class DoubleKeyDictionary : IEnumerable<KeyValuePair<int, string>>
{
private readonly Type _underlyingType = Enum.GetUnderlyingType(typeof(T));

private readonly SortedDictionary<int, string> MapIntString = new SortedDictionary<int, string>();
private readonly SortedDictionary<T, string> MapEnumString = new SortedDictionary<T, string>();

Expand All @@ -53,7 +55,8 @@ public bool TryGetValue(string name, out int backingValue)

public void Add(int backingValue, string name)
{
Add((T) (object) backingValue, backingValue, name);
var enumValue = (T)Convert.ChangeType(backingValue, _underlyingType);
Add(enumValue, backingValue, name);
}

public void Add(T enumValue, int backingValue, string name)
Expand All @@ -69,7 +72,8 @@ public void Add(T enumValue, int backingValue, string name)

public void Remove(int backingValue, string name)
{
Remove((T) (object) backingValue, backingValue, name);
var enumValue = (T)Convert.ChangeType(backingValue, _underlyingType);
Remove(enumValue, backingValue, name);
}

public void Remove(T enumValue, int backingValue, string name)
Expand Down

0 comments on commit cadd60f

Please sign in to comment.