我有一个复杂的对象图,在使用Json.NET进行序列化/反序列化。其中一些对象是从抽象类派生而来的,因此为了使反序列化正常工作,我需要创建一个自定义的JsonConverter
。它的唯一作用是在反序列化时选择适当的抽象类的具体实现,然后让Json.NET继续进行。
我的问题在于当我想要序列化时。我根本不需要进行任何自定义操作。我希望得到与没有自定义JsonConverter
使用JsonConvert.SerializeObject
完全相同的行为。
然而,由于我正在使用自定义的JsonConverter类满足我的反序列化需求,我被迫提供一个WriteJson
实现。由于WriteJson是抽象的,我无法直接调用base.WriteJson
,但我想做类似那样的事情。所以我的问题是,我该在这个方法中放什么来获得普通的默认行为?换句话说:
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
// What goes here to get default processing?
}
TypeNameHandling
打开到Auto
呢?这将添加一个"$type"属性,如果实例类型与其声明的属性类型不同(这将是接口或基类类型)。这难道不正是你想要的吗? - P.W.