diff --git a/src/libraries/System.Text.Json/ref/System.Text.Json.cs b/src/libraries/System.Text.Json/ref/System.Text.Json.cs index 4631b6fda81ab2..f311bd6e3f2915 100644 --- a/src/libraries/System.Text.Json/ref/System.Text.Json.cs +++ b/src/libraries/System.Text.Json/ref/System.Text.Json.cs @@ -535,7 +535,7 @@ public JsonStringEnumConverter(System.Text.Json.JsonNamingPolicy? namingPolicy = public override bool CanConvert(System.Type typeToConvert) { throw null; } public override System.Text.Json.Serialization.JsonConverter CreateConverter(System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; } } - [System.AttributeUsageAttribute(System.AttributeTargets.Property, AllowMultiple=false)] + [System.AttributeUsageAttribute(System.AttributeTargets.Field, AllowMultiple=false)] public sealed partial class JsonStringEnumMemberAttribute : System.Text.Json.Serialization.JsonAttribute { public JsonStringEnumMemberAttribute(string name) { } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs index 7a81304463b1e8..825c64fbc684a4 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/EnumConverter.cs @@ -50,14 +50,15 @@ public EnumConverter(EnumConverterOptions options, JsonNamingPolicy? namingPolic _namingPolicy = namingPolicy; if (_converterOptions.HasFlag(EnumConverterOptions.AllowStrings)) { - var fields = typeof(T).GetFields(); + var enumType = typeof(T); + var fields = enumType.GetFields(); foreach (var field in fields) { var attribute = field.GetCustomAttribute(false); if (attribute != null) { _enumToStringCache ??= new ConcurrentDictionary(); _stringToEnumCache ??= new ConcurrentDictionary, T>(); - var enumValue = Enum.Parse(field.Name); + var enumValue = (T) Enum.Parse(enumType, field.Name); _enumToStringCache[enumValue] = attribute.Name; _stringToEnumCache[ValueTuple.Create(attribute.Name)] = enumValue; }