From cd0ca65732102139f6448b355d4e1398567bac90 Mon Sep 17 00:00:00 2001 From: goexplore Date: Tue, 16 Feb 2021 02:20:47 +0100 Subject: [PATCH] [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 --- .../aspnetcore/3.0/Project.csproj.mustache | 1 + .../main/resources/aspnetcore/3.0/model.mustache | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache index 83036fc53a7e..957371b31143 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache @@ -40,6 +40,7 @@ {{/useNewtonsoft}} {{/useSwashbuckle}} + diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache index 491b39e54a14..5bd13ab9058a 100644 --- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache +++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/model.mustache @@ -7,6 +7,13 @@ using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; using Newtonsoft.Json; +{{#models}} +{{#model}} +{{#discriminator}} +using JsonSubTypes; +{{/discriminator}} +{{/model}} +{{/models}} using {{packageName}}.Converters; {{#models}} @@ -17,6 +24,12 @@ namespace {{modelPackage}} /// {{description}} /// [DataContract] + {{#discriminator}} + [JsonConverter(typeof(JsonSubtypes), "{{{discriminatorName}}}")] + {{#mappedModels}} + [JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")] + {{/mappedModels}} + {{/discriminator}} public {{#modelClassModifier}}{{modelClassModifier}} {{/modelClassModifier}}class {{classname}} : {{#parent}}{{{parent}}}, {{/parent}}IEquatable<{{classname}}> { {{#vars}}