首页 > 解决方案 > .net 中的 swashbuckle cli 和 nswag 中的可空引用类型

问题描述

我正在使用 dotnet swagger cli 为 ASP.NET 5.0 Web api 创建一个 swagger 定义文件,并使用 nswag 生成 C# 客户端类,但我遇到了障碍。我希望我的所有引用类型都可以为空,除非它们被标记为必需。对于我的原始字段,无论它是否可以为空,它都遵循 C# 约定,但我的引用在 swagger 定义中没有被标记为 nullable:true。

我已经尝试将序列化为 V2,但它只会使所有内容都可以为空,这也是我不想要的。

我现在正在使用以下 CLI 命令:

dotnet swagger tofile --serializeasv2 --output $(MSBuildProjectDirectory)\nswag\swagger.json project.dll v1" ConsoleToMSBuild="true" WorkingDirectory="$(OutputPath)"

标签: c#asp.net-coreswaggerswashbucklenswag

解决方案


好吧,我不知道如何准确地实现您提到的行为。
API 项目中的可空属性在生成的代码中保持不变(可空)就足够了吗?

为此,您可以将其添加到您的 API 项目中

services.AddSwaggerGen(c =>
{
    c.UseAllOfToExtendReferenceSchemas();

然后在 NSwag 生成器中启用以下选项: generateNullableReferenceTypes=true.

此选项类似于 NswagStudio UI 中“DTO 类”部分中的“生成可空引用类型...”。

我认为这种方法也应该适用于 swagger cli


推荐阅读