用途:为 .NET 的 System.Text.Json 配置多态序列化,通过 [JsonPolymorphic] 与 [JsonDerivedType] 特性处理继承层次,实现类型安全的序列化与反序列化。适用于序列化继承体系、添加类型鉴别器、为 AOT 兼容的 JSON 源生成做准备,以及将 Newtonsoft.Json 的 TypeNameHandling 迁移到现代特性。要求 .NET 7 或更高版本。
用法:先确认作用范围(整个解决方案或指定项目),搜索现有 [JsonPolymorphic] 与 TypeDiscriminatorPropertyName 约定;查找抽象类及其派生类型、用于序列化的接口实现、被继承的虚成员等候选。确认鉴别器属性名(默认 $type),若发现多个不同值会询问是否统一。随后在基类型上添加特性,例如 [JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")] 与 [JsonDerivedType(typeof(DerivedA), typeDiscriminator: "DerivedA")];确保引入 using System.Text.Json.Serialization;,最后执行 dotnet build 验证并报告配置的基类型与派生映射。
限制与注意:多态类型仅支持基于元数据的源生成,不支持快速路径源生成;序列化时必须使用基类型(如 JsonSerializer.Serialize<Notification>(...))多态才生效;建议用字符串鉴别器以提升可读性与前向兼容;层次结构中每层若有派生类型都需各自的 [JsonPolymorphic] 特性;接口在定义序列化契约时也可使用该特性。