SuperAPI AI 工具集

dotnet-json-polymorphic

编程与开发

查看项目

更新于 10-15 22:17

技能介绍

用途:为 System.Text.Json 配置多态序列化,使用 [JsonPolymorphic] 和 [JsonDerivedType] 特性处理继承层次,添加类型判别器以支持多态反序列化,并可为 AOT 兼容的 JSON 源生成做准备,也可替代 Newtonsoft.Json 的 TypeNameHandling。

主要能力:在基类型上标注 [JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")] 与多个 [JsonDerivedType(typeof(DerivedA), typeDiscriminator: "DerivedA")];支持接口定义序列化契约;支持嵌套层次(每层有派生类型时需各自标注)。

使用方式:先确认作用范围(整个解决方案或指定项目),搜索现有 [JsonPolymorphic] 与 TypeDiscriminatorPropertyName 约定,查找抽象类、接口及虚成员等候选类型,询问判别器属性名(默认 $type),检查并统一多个判别器,应用特性并确保 using System.Text.Json.Serialization;,最后运行 dotnet build 验证。

适用场景:序列化继承层次、为多态反序列化添加类型判别器、准备 AOT 兼容的源生成、从 Newtonsoft.Json 迁移。

限制:需要 .NET 7 或更高版本;多态类型不支持 fast-path 源生成,仅支持基于元数据的源生成;序列化时必须使用基类型(如 JsonSerializer.Serialize<Notification>(emailNotification))才能生效;判别器值建议用字符串而非整数;嵌套层次每层需单独标注。