当每个成员是不同的派生类时,如何序列化数据结构?

时间:2015-09-11 08:49:55

标签: c# json serialization data-structures json.net

我正在使用C#和Newtonsoft.Json。我正在使用RPG将字符保存到磁盘JsonCharacters包含inventory

我的' Inventory'类:

public class Inventory
{
    public Dictionary<EquipmentSlot, Equipment> Equiped = new Dictionary<EquipmentSlot, Equipment>();
    public Dictionary<CurrencyType, float> Currency = new Dictionary<CurrencyType, float>();
    public Item[] Loot = new Item[LootLimit];

    //some extra methods and stuff
}

&#34; Equipment&#34;是一个abstract class来自Armour&#34;,&#34; Weapon&#34;和&#34; Shield&#34;是派生的。 &#34; Armour&#34;不是non-abstract class,&#34; Weapon&#34;目前是abstract classShieldnon-abstract,因为我还没有设计它。

问题在于,因为对角色设备的引用被转换为&#34; Dictionary<EquipmentSlot, Equipment>&#34;,Json仅保存&#34; Equipment&#34;基地class。然后,当它反序列化时,它会尝试实例化&#34; Equipment&#34;和崩溃是因为&#34; Equipment&#34;是abstract

我可以看到这对我来说是个大问题,因为我到处都有DictionariesListsArrays和其他类型为基类的数据结构member是派生的class

  • 如何使这项工作?
  • 是否有比Json更好的序列化形式?
  • 或者是否有比Newtonsoft.Json.Dll更好的版本?
  • 我是否需要在自己的课程中编写自定义序列化? (实施例?)
  • 有更好的解决方案吗?

0 个答案:

没有答案