Отключите преобразование строк перечисления Swagger для определенного перечисления в .NET 5.0

#asp.net-core #enums #swagger

Вопрос:

Я создаю документацию по открытому API, используя Swagger для проекта .NET 5.0. В этом проекте у меня есть несколько возвращаемых перечислений, поэтому у меня есть настройка проекта для обработки их в виде строк в полезных нагрузках JSON.

 public void ConfigureServices(IServiceCollection services) {   services.AddControllers().AddNewtonsoftJson(options =gt; {  options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();  options.SerializerSettings.Converters.Add(new StringEnumConverter(new DefaultNamingStrategy {  OverrideSpecifiedNames = false  }));  });   services.AddSwaggerGen(c =gt; {   // Set the swagger doc stub  c.SwaggerDoc("v1", new OpenApiInfo {  Version = "v1",  Title = "API"  });   // Set the comments path for the Swagger JSON and UI.  string xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";  string xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);  c.IncludeXmlComments(xmlPath);   // Add documentation for our SignalR hubs to the documentation  c.DocumentFilterlt;SignalRSwaggerGen.SignalRSwaggerGengt;(new Listlt;Assemblygt; {   typeof(NotificationUserHub).Assembly   });  });   services.AddSwaggerGenNewtonsoftSupport(); }  

Это отлично работает для всех моих перечислений. Проблема, однако, возникает, когда я пытаюсь использовать перечисления, импортированные из .СЕТЕВЫЕ библиотеки:

 public sealed class ErrorResponse {   public HttpStatusCode StatusCode { get; set; }   public string Message { get; set; } }  

Этот объект использует System.Net.HttpStatusCode перечисление. Когда я сериализую и десериализую этот объект, перечисление отображается в виде числового значения, как и предполагалось. Однако в моей документации по Swagger показаны строковые значения для этого перечисления:

Пользовательский интерфейс Swagger, показывающий значения перечисления

Есть ли способ сообщить свэггеру, что конкретное перечисление должно обрабатываться как числовые значения?

Комментарии:

1. Я не думаю, что есть, конвертер применяется ко всем перечислениям.

2. @TanveerBadar В таком случае, есть ли атрибут, который я могу добавить в перечисления, которые я хочу сериализовать в виде строк, и удалить services.AddSwaggerGenNewtonsoftSupport() вызов?