using System.Reflection; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; namespace LearningOfficer.OA.Mobile.Api.Filters { public class NullableParameterFilter : IParameterFilter { public void Apply(OpenApiParameter parameter, ParameterFilterContext context) { if (context.ApiParameterDescription.Type is null) return; if (Nullable.GetUnderlyingType(context.ApiParameterDescription.Type) != null) { parameter.Schema.Nullable = true; } else if (context.ApiParameterDescription.Type.IsClass || context.ApiParameterDescription.Type.IsInterface) { var nullableAttribute = context.ParameterInfo?.GetCustomAttribute(); if (nullableAttribute != null || context.ApiParameterDescription.Type.FullName?.Contains("System.Nullable") == true) { parameter.Schema.Nullable = true; } } } } }