Added support for inheritance in Swashbuckle in ASP.NET Core (#12856)

* Added support for inheritance in Swashbuckle

* Updated to new API
This commit is contained in:
Max K 2022-07-21 05:44:46 +02:00 committed by GitHub
parent 2248baa5ea
commit 17c021df5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 13 additions and 0 deletions

View File

@ -86,6 +86,8 @@ namespace {{packageName}}
services
.AddSwaggerGen(c =>
{
c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
c.SwaggerDoc("{{{version}}}{{^version}}v1{{/version}}", new OpenApiInfo
{
Title = "{{{appName}}}{{^appName}}{{packageName}}{{/appName}}",

View File

@ -11,6 +11,7 @@ using Newtonsoft.Json;
{{#model}}
{{#discriminator}}
using JsonSubTypes;
using Swashbuckle.AspNetCore.Annotations;
{{/discriminator}}
{{/model}}
{{/models}}
@ -26,8 +27,10 @@ namespace {{modelPackage}}
[DataContract]
{{#discriminator}}
[JsonConverter(typeof(JsonSubtypes), "{{{discriminatorName}}}")]
[SwaggerDiscriminator("{{{discriminatorName}}}")]
{{#mappedModels}}
[JsonSubtypes.KnownSubType(typeof({{{modelName}}}), "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")]
[SwaggerSubType(typeof({{{modelName}}}), DiscriminatorValue = "{{^vendorExtensions.x-discriminator-value}}{{{mappingName}}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{.}}}{{/vendorExtensions.x-discriminator-value}}")]
{{/mappedModels}}
{{/discriminator}}
public {{#modelClassModifier}}{{.}} {{/modelClassModifier}}class {{classname}} {{#parent}}: {{{.}}}{{^pocoModels}}, {{/pocoModels}}{{/parent}}{{^pocoModels}}{{^parent}}: {{/parent}}IEquatable<{{classname}}>{{/pocoModels}}

View File

@ -80,6 +80,8 @@ namespace Org.OpenAPITools
services
.AddSwaggerGen(c =>
{
c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
c.SwaggerDoc("1.0.0", new OpenApiInfo
{
Title = "OpenAPI Petstore",

View File

@ -80,6 +80,8 @@ namespace Org.OpenAPITools
services
.AddSwaggerGen(c =>
{
c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
c.SwaggerDoc("1.0.0", new OpenApiInfo
{
Title = "OpenAPI Petstore",

View File

@ -80,6 +80,8 @@ namespace Org.OpenAPITools
services
.AddSwaggerGen(c =>
{
c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
c.SwaggerDoc("1.0.0", new OpenApiInfo
{
Title = "OpenAPI Petstore",

View File

@ -80,6 +80,8 @@ namespace Org.OpenAPITools
services
.AddSwaggerGen(c =>
{
c.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true);
c.SwaggerDoc("1.0.0", new OpenApiInfo
{
Title = "OpenAPI Petstore",