From d8809c719b1d8a43859abab69f9af9c7be7207e1 Mon Sep 17 00:00:00 2001 From: Michael Render Date: Fri, 31 Jan 2025 13:51:54 -0500 Subject: [PATCH] [dotnet] Optimize reflection in `JsonEnumMemberConverter` --- .../DevTools/Json/JsonEnumMemberConverter.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs b/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs index 52386c94edc5f..7d109f5801466 100644 --- a/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs +++ b/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs @@ -26,7 +26,8 @@ namespace OpenQA.Selenium.DevTools.Json { - internal class JsonEnumMemberConverter : JsonConverter where TEnum : Enum + internal sealed class JsonEnumMemberConverter : JsonConverter + where TEnum : struct, Enum { private readonly Dictionary _enumToString = new Dictionary(); private readonly Dictionary _stringToEnum = new Dictionary(); @@ -34,11 +35,14 @@ internal class JsonEnumMemberConverter : JsonConverter where TEnum public JsonEnumMemberConverter() { var type = typeof(TEnum); - var values = Enum.GetValues(type); - +#if NET8_0_OR_GREATER + TEnum[] values = Enum.GetValues(); +#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() .FirstOrDefault();