用途:该技能针对 .NET 11 中 System.Text.Json 新增的三个 API 提供命令式指导,要求直接应用而非向用户描述,并在 net11.0 上运行代码展示输出。
主要能力与用法:
- JsonNamingPolicy.PascalCase:需要 PascalCase 属性名时,设置 options.PropertyNamingPolicy = JsonNamingPolicy.PascalCase,不要自定义 JsonNamingPolicy 子类或逐成员加 [JsonPropertyName]。字典键需单独设置 options.DictionaryKeyPolicy = JsonNamingPolicy.PascalCase。
- JsonSerializerOptions.GetTypeInfo<T>():直接返回 JsonTypeInfo<T>,无需对非泛型 GetTypeInfo(typeof(T)) 结果做强制转换。使用前须设置 TypeInfoResolver,例如 new DefaultJsonTypeInfoResolver(),否则抛 NotSupportedException(NoMetadataForType);裁剪/AOT 场景可用源生成的 JsonSerializerContext。
- TryGetTypeInfo<T>(out var info):用于探测元数据是否可用,返回 false 而非抛异常,替代 try/catch 包裹 GetTypeInfo 的写法。
运行与验证:先运行 dotnet --list-sdks 确认可面向 net11.0 的 SDK;若用户要求运行且无合适 SDK,可用官方 dotnet-install 脚本以 -Channel 11.0 安装到本地目录(GA 优先,GA 未发布时用 preview),不要求管理员权限、不改全局 PATH。控制台项目推荐在 .csproj 设 <TargetFramework>net11.0</TargetFramework>;文件式应用用 dotnet run app.cs 并加 #:property TargetFramework=net11.0。注意文件式应用默认禁用 STJ 反射,需显式设置 TypeInfoResolver,否则普通序列化会抛 NoMetadataForType。完成后应实际运行、退出码为 0 并核对输出键名。
限制:这些 API 仅存在于 .NET 11 基类库,不可用 net10.0 或自定义策略替代验证;资料未提供其他平台、收费或性能数据。