Nswag CSharp 客户端生成器将字符串标记为必需

问题描述 投票:0回答:1

我有一个 .Net 8.0 WebAPI 项目,我使用 NSwag 生成一个 c# SDK APIClient 类,以便我可以从另一个项目与其交互。

NSwag 正在用此属性标记所有字符串

 [Newtonsoft.Json.JsonProperty("longUrl", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
public string LongUrl{ get; set; }

它对所有字符串都执行此操作。我遇到的问题是,当我调用客户端并尝试将 json 反序列化为对象时,如果未提供字符串,则会失败。

我不确定我应该在这里做什么?如果我手动更改

Required = Newtonsoft.Json.Required.DisallowNull 
to Newtonsoft.Json.Required.Default 

然后它就可以工作了,但我不想在每次构建后手动更新整个文件。

我需要用可为空的字符串标记我的 DTO 吗

例如:

string? LongUrl { get; set; }

或者有没有办法让 Nswag 始终使用默认值?

c# asp.net-core nswag
1个回答
0
投票

从 .NET 6 开始,必须要求不可为 null 的属性。正如您所说,您可以使用

?
或设置默认值以允许可为空。如果你想全局实现需求,只需打开项目文件并删除
<Nullable>enable</Nullable>

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <!--<Nullable>enable</Nullable>-->
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

</Project>
© www.soinside.com 2019 - 2024. All rights reserved.