我不熟悉在 C# 中使用 json 序列化。 如果我执行以下操作,这段代码会起作用吗: A)想要序列化继承Loadable的对象 B) 想要加载继承类型的序列化实例? [对于这一点,我需要一些帮助来将序列化实例加载到对象的当前实例中,我当前的系统需要向下转型]
internal abstract class Loadable
{
public void Save(string fileName)
{
File.WriteAllText(fileName + ".json", JsonSerializer.Serialize(this));
}
public IBrain Load(string fileName, Type brainType)
{
return (IBrain)JsonSerializer.Deserialize(File.ReadAllText(fileName + ".json"), brainType);
}
}
要序列化/反序列化派生类型,可以使用“多态序列化”,它添加了可用于反序列化为正确类型的类型信息。请注意,您通常仍然需要在编译时了解所有派生类型。 使用运行时已知的类型
only序列化对象也应该可以正常工作。 serialize 方法 只需要一个 object
和一个
Type
。并且 Type
可以从对象本身创建。反序列化完全未知的类型将更具挑战性。您仍然可以传递 Type
对象,但这需要您以某种方式知道它应该是什么类型。但是如果没有任何静态类型,您就无法真正将该对象用于任何用途。因此,您可能需要将 json 视为属性树。请参阅
Json 文档对象模型。