【发布时间】:2020-12-16 06:25:44
【问题描述】:
我正在为https://github.com/13xforever/gvas-converter 开发一个能够解析 UnrealEngine .sav 文件的扩展。 (https://github.com/RagingLightning/gvas-converter/blob/master/GvasFormat/Gvas.cs)
我有三个相关的课程:
public class Gvas:要反序列化的主类,有一个字段public List<UEProperty> Properties = new List<UEProperty>();
public abstract class UEProperty:所有可能的虚幻引擎属性的基类
带有字段string Type 表示当前子类是哪个子类
public class UEStringProperty : UEProperty:扩展 UEProperty 的全功能类,为 String 变体量身定制
当我反序列化 Gvas 对象时:
Gvas data = JsonConverter.DeserialiteObject<Gvas>(<json-string>);
反序列化器尝试多次实例化UEProperty 类以填充Properties 列表并失败,因为该类是抽象的。
如何告诉反序列化器根据Type 的值实例化一个子类(例如,当Type == "StringProperty" 时实例化UEStringProperty)?
【问题讨论】:
标签: c# json.net unreal-engine4