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 f22feb4a517a7..1e57f75ff9791 100644 --- a/src/libraries/System.Text.Json/ref/System.Text.Json.cs +++ b/src/libraries/System.Text.Json/ref/System.Text.Json.cs @@ -847,12 +847,12 @@ public enum JsonSourceGenerationMode Metadata = 1, Serialization = 2, } - public sealed partial class JsonStringEnumConverter : System.Text.Json.Serialization.JsonConverterFactory + public partial class JsonStringEnumConverter : System.Text.Json.Serialization.JsonConverterFactory { public JsonStringEnumConverter() { } public JsonStringEnumConverter(System.Text.Json.JsonNamingPolicy? namingPolicy = null, bool allowIntegerValues = true) { } - 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; } + public sealed override bool CanConvert(System.Type typeToConvert) { throw null; } + public sealed override System.Text.Json.Serialization.JsonConverter CreateConverter(System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; } } public enum JsonUnknownTypeHandling { diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonStringEnumConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonStringEnumConverter.cs index ac6fe18b9dbda..7d8d161acd0a3 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonStringEnumConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonStringEnumConverter.cs @@ -11,7 +11,7 @@ namespace System.Text.Json.Serialization /// /// Reading is case insensitive, writing can be customized via a . /// - public sealed class JsonStringEnumConverter : JsonConverterFactory + public class JsonStringEnumConverter : JsonConverterFactory { private readonly JsonNamingPolicy? _namingPolicy; private readonly EnumConverterOptions _converterOptions; @@ -45,13 +45,13 @@ public JsonStringEnumConverter(JsonNamingPolicy? namingPolicy = null, bool allow } /// - public override bool CanConvert(Type typeToConvert) + public sealed override bool CanConvert(Type typeToConvert) { return typeToConvert.IsEnum; } /// - public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) => + public sealed override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) => EnumConverterFactory.Create(typeToConvert, _converterOptions, _namingPolicy, options); } } diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/EnumConverterTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/EnumConverterTests.cs index 2365a92017038..46cf684ce28ed 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/EnumConverterTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/EnumConverterTests.cs @@ -135,17 +135,15 @@ public class Week [JsonConverter(typeof(JsonStringEnumConverter))] public DayOfWeek WorkStart { get; set; } public DayOfWeek WorkEnd { get; set; } - [LowerCaseEnum] + [JsonConverter(typeof(LowerCaseEnumConverter))] public DayOfWeek WeekEnd { get; set; } } - [AttributeUsage(AttributeTargets.Property | AttributeTargets.Class, AllowMultiple = false)] - private class LowerCaseEnumAttribute : JsonConverterAttribute + private class LowerCaseEnumConverter : JsonStringEnumConverter { - public LowerCaseEnumAttribute() { } - - public override JsonConverter CreateConverter(Type typeToConvert) - => new JsonStringEnumConverter(new ToLowerNamingPolicy()); + public LowerCaseEnumConverter() : base(new ToLowerNamingPolicy()) + { + } } [Fact]