.NET 10的 OpenAPI生成器不会像Swashbuckle那样生成可空的枚举

后端开发 2026-07-10

我们已经将.NET更新到了10,并且也想从Swashbuckle迁移到新的集成OpenAPI生成器。

不幸的是,生成的OpenAPI规范中不再把可空枚举属性标记为可空(如 MyEnum? MyPropNullable<MyEnum> MyProp)。

使用Swashbuckle时,属性的类型是枚举类型,并且在生成的OpenAPI规范中还包含 nullable: true。现在使用新的生成器,它没有 nullable: true,而是将类型设为 oneOf,其中同时包含枚举类型和 "type": "null"

现在在基于该规范生成API客户端时,生成的属性不再具有像 MyEnum? MyProp 那样的可空枚举类型,而是会以一个附加生成的类作为类型,如 MyEnum2 MyProp,与原始枚举类型没有联系。

如何让新的OpenAPI生成器把属性生成为可空枚举,以便客户端像以前一样拥有可空枚举属性?

解决方案

不确定默认的OpenAPI 3.1.1版本生成器的修复方法,但目前的一个变通方案是改用OpenAPI版本3.0:

options.OpenApiVersion = OpenApiSpecVersion.OpenApi3_0;
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章