Skip to content

Commit 2ebd621

Browse files
Unseal StringEnumConverter. Fix #30486 (#54917)
1 parent 1ceda71 commit 2ebd621

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

src/libraries/System.Text.Json/ref/System.Text.Json.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -847,12 +847,12 @@ public enum JsonSourceGenerationMode
847847
Metadata = 1,
848848
Serialization = 2,
849849
}
850-
public sealed partial class JsonStringEnumConverter : System.Text.Json.Serialization.JsonConverterFactory
850+
public partial class JsonStringEnumConverter : System.Text.Json.Serialization.JsonConverterFactory
851851
{
852852
public JsonStringEnumConverter() { }
853853
public JsonStringEnumConverter(System.Text.Json.JsonNamingPolicy? namingPolicy = null, bool allowIntegerValues = true) { }
854-
public override bool CanConvert(System.Type typeToConvert) { throw null; }
855-
public override System.Text.Json.Serialization.JsonConverter CreateConverter(System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; }
854+
public sealed override bool CanConvert(System.Type typeToConvert) { throw null; }
855+
public sealed override System.Text.Json.Serialization.JsonConverter CreateConverter(System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; }
856856
}
857857
public enum JsonUnknownTypeHandling
858858
{

src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonStringEnumConverter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace System.Text.Json.Serialization
1111
/// <remarks>
1212
/// Reading is case insensitive, writing can be customized via a <see cref="JsonNamingPolicy" />.
1313
/// </remarks>
14-
public sealed class JsonStringEnumConverter : JsonConverterFactory
14+
public class JsonStringEnumConverter : JsonConverterFactory
1515
{
1616
private readonly JsonNamingPolicy? _namingPolicy;
1717
private readonly EnumConverterOptions _converterOptions;
@@ -45,13 +45,13 @@ public JsonStringEnumConverter(JsonNamingPolicy? namingPolicy = null, bool allow
4545
}
4646

4747
/// <inheritdoc />
48-
public override bool CanConvert(Type typeToConvert)
48+
public sealed override bool CanConvert(Type typeToConvert)
4949
{
5050
return typeToConvert.IsEnum;
5151
}
5252

5353
/// <inheritdoc />
54-
public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) =>
54+
public sealed override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) =>
5555
EnumConverterFactory.Create(typeToConvert, _converterOptions, _namingPolicy, options);
5656
}
5757
}

src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/EnumConverterTests.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,15 @@ public class Week
135135
[JsonConverter(typeof(JsonStringEnumConverter))]
136136
public DayOfWeek WorkStart { get; set; }
137137
public DayOfWeek WorkEnd { get; set; }
138-
[LowerCaseEnum]
138+
[JsonConverter(typeof(LowerCaseEnumConverter))]
139139
public DayOfWeek WeekEnd { get; set; }
140140
}
141141

142-
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Class, AllowMultiple = false)]
143-
private class LowerCaseEnumAttribute : JsonConverterAttribute
142+
private class LowerCaseEnumConverter : JsonStringEnumConverter
144143
{
145-
public LowerCaseEnumAttribute() { }
146-
147-
public override JsonConverter CreateConverter(Type typeToConvert)
148-
=> new JsonStringEnumConverter(new ToLowerNamingPolicy());
144+
public LowerCaseEnumConverter() : base(new ToLowerNamingPolicy())
145+
{
146+
}
149147
}
150148

151149
[Fact]

0 commit comments

Comments
 (0)