使用默认值为枚举生成C#招摇过市

使用默认值为枚举生成C#招摇过市,c#,enums,swagger,swagger-codegen,C#,Enums,Swagger,Swagger Codegen,我的api如下所示: public Task<IActionResult> GetAsync([FromRoute] string id, [FromQuery] Query select = Query.All) 我补充说 services.AddSwaggerGen(c =>{c.DescribeAllEnumsAsStrings();}) 在startup.cs中,但这不适用于默认值,我得到以下生成的招摇过市,默认值为0而不是字符串: {

我的api如下所示:

public Task<IActionResult> GetAsync([FromRoute] string id, [FromQuery] Query select = Query.All)
我补充说

 services.AddSwaggerGen(c =>{c.DescribeAllEnumsAsStrings();})
在startup.cs中,但这不适用于默认值,我得到以下生成的招摇过市,默认值为0而不是字符串:

     {
        "name": "selec",
        "in": "query",
        "description": "",
        "required": false,
        "type": "string",
        "default": 0, //NOT SHOWN AS STRING
        "enum": [
          "none",
          "property1",
          "property2"
        ]
      },

如何使默认值显示为字符串?

您的项目将根据应用程序的序列化设置自动反序列化,解决方法是添加更改该特定属性序列化的标记

[JsonConverter(typeof(StringEnumConverter))]
编辑:启动时,您可以插入json选项,将枚举序列化为字符串,如下所示:

 services.AddMvc().AddJsonOptions(options =>
                {
                    options.SerializerSettings.Converters.Add(new StringEnumConverter(true));
                });

我将在哪里添加此标签?当我查看SDK swagger生成的代码时,我看到了这一点,但我不知道如何将其添加到代码中,从而使其序列化correctly@BenZifkin这种方法正好位于与枚举匹配的类属性之上。对于启动配置,请检查编辑
 services.AddMvc().AddJsonOptions(options =>
                {
                    options.SerializerSettings.Converters.Add(new StringEnumConverter(true));
                });