Полагаю, мы говорим о .NET Core
Если для вас все будет в порядке, вы сможете определить его как enum вместо строки
public class AddNewPaymentRequest
{
//[EnumDataType(typeof(PaymentStatus))]
//public string PaymentStatus { get; set; }
public PaymentStatus PaymentStatus { get; set; }
public string Id { get; set; }
}
Тогда вы можете определить, как SwaggerGen обрабатывает перечисления
services.AddSwaggerGen(c => {c.DescribeAllEnumsAsStrings(); } );
Если у вас возникли проблемы с сериализованными / десериализованными перечислениями (от Newtonsoft.Json) при получении / отправке данных на / от вашего API, вы можете взять больше контроллера для преобразования (при необходимости)
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public enum PaymentStatus
{
[EnumMember(Value = "Unknwon")]
Unknown,
[EnumMember(Value = "New")]
New,
[EnumMember(Value = "Pending")]
Pending,
[EnumMember(Value = "Completed")]
Completed,
[EnumMember(Value = "something_different_with_underline")]
SomethingDifferentWithUnderline
}
Помните, что ToString () для этих перечислений может приводить к различным строкам (с / без) подчеркивания