Skip to content

Commit 92b05ec

Browse files
authored
Add support for JsonStringEnumConverter<T> detection and test it (#1868)
Closes: - #1867 - #1741
1 parent 27d3564 commit 92b05ec

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/NJsonSchema.Tests/Generation/SystemTextJson/SystemTextJsonOptionsConverterTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ public class AnnotatedPerson
7272

7373
[JsonConverter(typeof(JsonStringEnumConverter))]
7474
public MyEnum StringEnum { get; set; }
75+
76+
[JsonConverter(typeof(JsonStringEnumConverter<MyEnum>))]
77+
public MyEnum StringEnum2 { get; set; }
7578

7679
public MyEnum IntEnum { get; set; }
7780
}
@@ -103,6 +106,7 @@ public async Task SystemTextJson_WhenGeneratingWithCustomPropertyNames_ThenAttri
103106
Assert.True(schema.Properties.ContainsKey("NameLast"));
104107

105108
Assert.True(schema.Properties["stringEnum"].ActualSchema.Type.HasFlag(JsonObjectType.String));
109+
Assert.True(schema.Properties["stringEnum2"].ActualSchema.Type.HasFlag(JsonObjectType.String));
106110
Assert.True(schema.Properties["intEnum"].ActualSchema.Type.HasFlag(JsonObjectType.Integer));
107111
}
108112
}

src/NJsonSchema/Generation/ReflectionServiceBase.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,8 @@ private static bool HasStringEnumConverter(ContextualType contextualType)
379379
if (jsonConverterAttribute?.ConverterType is Type converterType)
380380
{
381381
return converterType.IsAssignableToTypeName("StringEnumConverter", TypeNameStyle.Name) ||
382-
converterType.IsAssignableToTypeName("System.Text.Json.Serialization.JsonStringEnumConverter", TypeNameStyle.FullName);
382+
converterType.IsAssignableToTypeName("System.Text.Json.Serialization.JsonStringEnumConverter", TypeNameStyle.FullName) ||
383+
converterType.IsAssignableToTypeName($"System.Text.Json.Serialization.JsonStringEnumConverter`1[[{contextualType.OriginalType.AssemblyQualifiedName}]]", TypeNameStyle.FullName);
383384
}
384385
}
385386

0 commit comments

Comments
 (0)