我想序列化以下对象:
class Zoo
{
public List<Animal> Animals { get; set; }
}
class Animal
{
public Animal(string name)
{
Name = name;
}
public string Name { get; private set; }
}
class Dog : Animal
{
public Dog(string name) : base(name)
{
}
}
class Cat : Animal
{
public Cat(string name) : base(name)
{
}
}
使用自定义活页夹将其序列化/反序列化到 JSON/从 JSON 序列化/反序列化不是问题:
var settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
Binder = binder
};
string json = JsonConvert.SerializeObject(zoo, settings);
var deserialized = JsonConvert.DeserializeObject<Zoo>(json, settings);
我的自定义活页夹的 BindToType/BindToName 方法都在序列化/反序列化期间调用。
我用 BSON 尝试了同样的技术,但不幸的是它不起作用。结果不是 Zoo 对象,而是 JObject。看起来结果流不包含任何类型信息,并且在反序列化期间没有调用我的活页夹。
任何建议表示赞赏。