我想序列化以下对象。
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格式是没有问题的。
var settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
Binder = binder
};
string json = JsonConvert.SerializeObject(zoo, settings);
var deserialized = JsonConvert.DeserializeObject<Zoo>(json, settings);
在序列化序列化的过程中 我的自定义绑定器的BindToTypeBindToName方法都被调用了。
我用BSON尝试了同样的技术,但不幸的是它没有工作。结果不是Zoo对象,而是JObject.看来结果流不包含任何类型信息,而且我的binder在反序列化期间没有被调用。
感谢任何建议。
你需要设置 BsonReadRootValueAsArray
到 true
. 詹姆斯的答案在这里。https:/stackoverflow.coma16949792。