using Newtonsoft.Json.Linq; namespace AibisDream.SaveSystem { /// /// 读盘后 中的值常为 ; /// 本类按 SaveId 转回各 Provider 所需的强类型 DTO。 /// public static class SnapshotSectionDeserializer { /// 若 dto 已是强类型则原样返回;若为 JObject 则 ToObject 到对应 DTO。 public static object Coerce(string saveId, object dto) { if (dto is not JObject jobj) { return dto; } return saveId switch { SnapshotProviderIds.Scene => jobj.ToObject(), SnapshotProviderIds.Macro => jobj.ToObject(), SnapshotProviderIds.Environment => jobj.ToObject(), SnapshotProviderIds.Actor => jobj.ToObject(), SnapshotProviderIds.Audio => jobj.ToObject(), SnapshotProviderIds.Timeline => jobj.ToObject(), SnapshotProviderIds.Screen => jobj.ToObject(), _ => jobj }; } } }