public static void GeneratePolymorphicSchemas( this SwaggerGenOptions swaggerGenOptions, Func <Type, IEnumerable <Type> > subTypesResolver = null, Func <Type, string> discriminatorSelector = null) { swaggerGenOptions.UseOneOfForPolymorphism(discriminatorSelector); if (subTypesResolver != null) { swaggerGenOptions.DetectSubTypesUsing(subTypesResolver); } swaggerGenOptions.UseAllOfForInheritance(); }
/// <summary> /// Enables Swagger annotations (SwaggerOperationAttribute, SwaggerParameterAttribute etc.) /// </summary> /// <param name="options"></param> /// <param name="enableSubTypeAnnotations">Enables polymorphic schemas based on the presence of SwaggerSubTypeAttribute on base types</param> public static void EnableAnnotations(this SwaggerGenOptions options, bool enableSubTypeAnnotations = false) { options.SchemaFilter <AnnotationsSchemaFilter>(); options.ParameterFilter <AnnotationsParameterFilter>(); options.RequestBodyFilter <AnnotationsRequestBodyFilter>(); options.OperationFilter <AnnotationsOperationFilter>(); options.DocumentFilter <AnnotationsDocumentFilter>(); if (enableSubTypeAnnotations) { options.UseOneOfForPolymorphism(AnnotationsDiscriminatorSelector); options.DetectSubTypesUsing(AnnotationsSubTypeResolver); options.UseAllOfForInheritance(); } }