当前位置:网站首页 > R语言数据分析 > 正文

swagger2配置实体类不生效(swagger怎么配置)



从 .NET 9 开始, 在序列化和反序列化中都(有限地)支持不可为 null 的引用类型强制实施。 可以使用 JsonSerializerOptions.RespectNullableAnnotations 标志切换此支持。

例如,以下代码片段在序列化过程中引发 ,并显示如下消息:

类型“Person”的属性或字段“Name”不允许获取 null 值。 请考虑更新其可为 Null 性批注。

 

同样,RespectNullableAnnotations 对反序列化强制执行可为 Null 性。 以下代码片段在序列化过程中引发 ,并显示如下消息:

类型“Person”上的构造函数参数“Name”不允许 null 值。 请考虑更新其可为 Null 性批注。

 

由于不可为 null 引用类型的实现方式,此功能存在一些重要限制。 在启用该功能之前,请熟悉这些限制。 问题的根是引用类型可为 Null 性在中间语言 (IL) 中没有一流的表示形式。 因此,从运行时反射的角度来看,表达式 和 是无法区分的。 虽然编译器试图通过发出属性元数据来弥补这一点(请参阅 sharplab.io 示例),但此元数据仅限于特定类型定义范围内的非通用成员注释。 此限制是因为该标志仅验证存在于非通用属性、字段和构造函数参数上的可为 Null 性注释。 System.Text.Json 不支持对以下对象强制执行可为 Null 性:

  • 顶级类型,或在进行第一次 或 调用时传递的类型。
  • 集合元素类型,例如, 和 类型无法区分。
  • 任何通用属性、字段或构造函数参数。

如果要在这些情况下添加可为 null 性强制,要么将你的类型建模为结构(因为它们不允许 null 值),要么编写一个自定义转换器,将其 HandleNull 属性重写为 。

可以使用 功能开关全局打开 设置。 将以下 MSBuild 项添加到项目文件(例如,.csproj 文件):

 

API 在 .NET 9 中作为选择加入标志实现,以避免中断现有应用程序。 如果要编写新应用程序,强烈建议在代码中启用此标志。

RespectNullableAnnotations 不会将强制措施扩展到未指定的 JSON 值,因为 System.Text.Json 将必需和不可为 null 的属性视为正交概念。 例如,以下代码段在反序列化过程中不会引发异常:

 

此行为源于 C# 语言本身,你可以在其中具有可以为 Null 的必需属性:

 

还可以具有不可为 Null 的可选属性:

 

同样的正交性也适用于构造函数参数:

 
  • 非可选构造函数参数
到此这篇swagger2配置实体类不生效(swagger怎么配置)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • nsenter命令详解(ntsd命令)2025-03-09 08:45:10
  • oracle教程文档(oracle12教程)2025-03-09 08:45:10
  • druid未授权访问漏洞修复修改(druid 未授权访问)2025-03-09 08:45:10
  • druid怎么读(drury 怎么读)2025-03-09 08:45:10
  • spring入门(spring入门程序实验报告)2025-03-09 08:45:10
  • resnet50有多少个卷积层(resnet50卷积层数)2025-03-09 08:45:10
  • aurocean怎么读(auroral怎么读)2025-03-09 08:45:10
  • 7400pro提示纸盒无纸(m7400提示纸盒无纸)2025-03-09 08:45:10
  • rmsprop算法怎么读(prim算法)2025-03-09 08:45:10
  • resnet模型结构(resnet18模型)2025-03-09 08:45:10
  • 全屏图片