Skip to content

Commit

Permalink
[dotnet] Optimize reflection in JsonEnumMemberConverter (#15205)
Browse files Browse the repository at this point in the history
  • Loading branch information
RenderMichael authored Jan 31, 2025
1 parent 3de1d94 commit b0ee450
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,23 @@

namespace OpenQA.Selenium.DevTools.Json
{
internal class JsonEnumMemberConverter<TEnum> : JsonConverter<TEnum> where TEnum : Enum
internal sealed class JsonEnumMemberConverter<TEnum> : JsonConverter<TEnum>
where TEnum : struct, Enum
{
private readonly Dictionary<TEnum, string> _enumToString = new Dictionary<TEnum, string>();
private readonly Dictionary<string, TEnum> _stringToEnum = new Dictionary<string, TEnum>();

public JsonEnumMemberConverter()
{
var type = typeof(TEnum);
var values = Enum.GetValues(type);

#if NET8_0_OR_GREATER
TEnum[] values = Enum.GetValues<TEnum>();
#else
Array values = Enum.GetValues(type);
#endif
foreach (var value in values)
{
var enumMember = type.GetMember(value.ToString())[0];
var enumMember = type.GetField(value.ToString());
var attr = enumMember.GetCustomAttributes(typeof(EnumMemberAttribute), false)
.Cast<EnumMemberAttribute>()
.FirstOrDefault();
Expand Down

0 comments on commit b0ee450

Please sign in to comment.