C# 从Swagger中排除特定枚举值

C# 从Swagger中排除特定枚举值,c#,.net,enums,swagger,swashbuckle,C#,.net,Enums,Swagger,Swashbuckle,我总是向我的所有枚举添加一个未初始化的值,并将其设置为0,以处理反序列化具有从未设置的枚举属性值的对象的情况 enum MyEnum { Uninitialized = 0, MyEnumValue1 = 1, MyEnumValue2 = 2, MyEnumValue3 = 3, } 但是,我不希望未初始化的值出现在我的Swagger文档中 我尝试将[JsonIgnore]属性添加到该值中,但没有成功 有人知道如何做到这一点吗?您可以使用IDocumentFi

我总是向我的所有枚举添加一个
未初始化的
值,并将其设置为
0
,以处理反序列化具有从未设置的枚举属性值的对象的情况

enum MyEnum
{
    Uninitialized = 0,
    MyEnumValue1 = 1,
    MyEnumValue2 = 2,
    MyEnumValue3 = 3,
}
但是,我不希望未初始化的
值出现在我的Swagger文档中

我尝试将
[JsonIgnore]
属性添加到该值中,但没有成功


有人知道如何做到这一点吗?

您可以使用
IDocumentFilter
从规范中删除任何您想要的内容

一开始可能并不直观,看看他们的一些例子:

这样,您就可以更改swagger json规范,以删除或插入任何您想要的内容。

现在要小心,你可能会得到一个不符合的规范,请始终对照验证器进行检查:

你是否使用Swachbuckle生成了Swagger页面?@ysabih是的。我使用的是SwashBulk.AspNetCore v4.0.2SwashBulk不支持隐藏枚举成员,您必须将枚举包装在一个类中,然后使用[JsonIngore],下面是一个详细的答案