.net core 虚张声势/虚张声势带扣字符串属性选项

.net core 虚张声势/虚张声势带扣字符串属性选项,.net-core,swagger,swashbuckle,.net Core,Swagger,Swashbuckle,我们在.NETCore3.1项目中有一个API,它有一个控制器,返回一个由Swagger(由Swashback生成)记录的模型。 端点的使用者希望看到给定属性可能返回的选项。出于几个原因,至少现在这不仅仅是一个枚举,这将使这个过程更加容易。它是一个可以返回两个不同值的字符串 是否有任何方法来装饰该属性,使其选项可以像枚举一样大摇大摆地使用?对于枚举,我们可以在启动时使用MapType,但这只是一个字符串,因此它不是我们可以映射的类型 这是我们以前使用enum的方式: c.MapType<P

我们在.NETCore3.1项目中有一个API,它有一个控制器,返回一个由Swagger(由Swashback生成)记录的模型。 端点的使用者希望看到给定属性可能返回的选项。出于几个原因,至少现在这不仅仅是一个枚举,这将使这个过程更加容易。它是一个可以返回两个不同值的字符串

是否有任何方法来装饰该属性,使其选项可以像枚举一样大摇大摆地使用?对于枚举,我们可以在启动时使用MapType,但这只是一个字符串,因此它不是我们可以映射的类型

这是我们以前使用enum的方式:

c.MapType<PaginationSessionType>(() => new OpenApiSchema
{
  Type = "string",
  Enum = typeof(PaginationSessionType).GetEnumNames()
         .Select(name => new OpenApiString(name)).Cast<IOpenApiAny>().ToList()
});
c.MapType(()=>newopenapischema
{
Type=“string”,
Enum=typeof(PaginationSessionType).GetEnumNames()
.Select(name=>newOpenAPIString(name)).Cast().ToList()
});

我可以用
“swagger”做你需要的事情:“2.0”
不能100%确定你正在使用的版本。。。那时,我通过
RegularExpression
decorator得到了我所需要的

下面是生成以下内容的代码:

使用System.Web.Http;
使用System.ComponentModel.DataAnnotations;
命名空间Swagger_Test.Controllers
{
公共类MyEndpointRequestClass
{
[正则表达式(^(深蓝色|深红色|浅蓝色|浅红色))]
公共字符串StringEnumColor{get;set;}
[正则表达式(“^(高|中|低)”)]
公共字符串透明度{get;set;}
公共字符串名称{get;set;}
}
公共类TestStringEnumController:ApicController
{
公共字符串Post([FromUri]MyEndpointRequestClass r)
{
返回r.StringEnumColor;
}
公共字符串Get([RegularExpression(“^(uno | due)”)]string x)
{
返回x;
}
}
}
其中的相关swagger.json是:

。。。
“MyEndpointRequestClass”:{
“财产”:{
“StringEnumColor”:{
“类型”:“字符串”,
“图案”:“^(深蓝色|深红色|浅蓝色|浅红色)”
},
“透明度”:{
“类型”:“字符串”,
“模式”:“^(高|中|低)”
},
“姓名”:{
“类型”:“字符串”
}
},
“xml”:{
“名称”:“MyEndpointRequestClass”
},
“类型”:“对象”
},
...
这也许不能回答你的问题,但希望它能让你走上正确的方向