C# Swashbuckle-在swagger文档中将字符串视为枚举
我正在使用FluentValidation,我只希望从FluentValidator接收自定义错误。这就是为什么请求类中的所有属性都是字符串。但是,我也希望有更好的枚举类型文档 这是我的请求示例:C# Swashbuckle-在swagger文档中将字符串视为枚举,c#,enums,swagger,swagger-ui,swashbuckle,C#,Enums,Swagger,Swagger Ui,Swashbuckle,我正在使用FluentValidation,我只希望从FluentValidator接收自定义错误。这就是为什么请求类中的所有属性都是字符串。但是,我也希望有更好的枚举类型文档 这是我的请求示例: public class AddNewPaymentRequest { [EnumDataType(typeof(PaymentStatus))] public string PaymentStatus { get; set; } public string Id
public class AddNewPaymentRequest
{
[EnumDataType(typeof(PaymentStatus))]
public string PaymentStatus { get; set; }
public string Id { get; set; }
}
和样本枚举:
public enum PaymentStatus
{
Unknown,
New,
Pending,
Completed
}
和控制器:
[HttpPost]
public async Task<ActionResult> PostAsync([FromBody] AddNewPaymentRequest request)
{
...
}
[HttpPost]
公共异步任务
预期结果:
有没有可能以这种方式配置Swashback?我想我们讨论的是.NET核心
如果您觉得合适,可以将其明确定义为enum而不是string
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(); } );
如果在api上接收/发送数据时遇到序列化/反序列化枚举(由Newtonsoft.Json提供)问题,您可以了解更多有关转换的信息(如有必要)
请注意,这些枚举的ToString()可能会导致不同的字符串(带/不带下划线)Swagger仅支持RequiredAttribute
、ObsoleteAttribute
和元数据
(用于外部类)。
所以除了写这样的东西,没有办法描述被接受的价值观:
///允许的值是……
您能够解析它吗?或者您遵循了下面的答案?不是的,我想尝试用int而不是strings来解决这个问题。有没有办法用int来解决这个问题?Swashback的方法descripbeAllenumsasstrings()已经过时了。您应该配置您的序列化程序,斯威格将自动使用它。
[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
}