Skip to content

Commit cd0ca65

Browse files
goexploreAnders Gilje
andauthored
[aspnetcore] Improve model inheritance support by including JsonSubTypes to properly handle serialization (#8384)
* Add JsonSubTypes to templates * Add JsonSubTypes to templates Co-authored-by: Anders Gilje <agilje@slb.com>
1 parent 53285e5 commit cd0ca65

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="{{newtonsoftVersion}}" />
4141
{{/useNewtonsoft}}
4242
{{/useSwashbuckle}}
43+
<PackageReference Include="JsonSubTypes" Version="1.8.0" />
4344
</ItemGroup>
4445
<ItemGroup>
4546
<!--<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="{{aspnetCoreVersion}}.0" />-->

modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ using System.ComponentModel;
77
using System.ComponentModel.DataAnnotations;
88
using System.Runtime.Serialization;
99
using Newtonsoft.Json;
10+
{{#models}}
11+
{{#model}}
12+
{{#discriminator}}
13+
using JsonSubTypes;
14+
{{/discriminator}}
15+
{{/model}}
16+
{{/models}}
1017
using {{packageName}}.Converters;
1118

1219
{{#models}}
@@ -17,6 +24,12 @@ namespace {{modelPackage}}
1724
/// {{description}}
1825
/// </summary>
1926
[DataContract]
27+
{{#discriminator}}
28+
[JsonConverter(typeof(JsonSubtypes), "{{{discriminatorName}}}")]
29+
{{#mappedModels}}
30+
[JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")]
31+
{{/mappedModels}}
32+
{{/discriminator}}
2033
public {{#modelClassModifier}}{{modelClassModifier}} {{/modelClassModifier}}class {{classname}} : {{#parent}}{{{parent}}}, {{/parent}}IEquatable<{{classname}}>
2134
{
2235
{{#vars}}

0 commit comments

Comments
 (0)