如何在自定义JsonConverter中使用默认序列化

如何在自定义JsonConverter中使用默认序列化,json,json.net,Json,Json.net,我有一个复杂的对象图,我正在用Json.NET序列化/反序列化它。有些对象派生自抽象类,因此为了使反序列化正常工作,我需要创建一个自定义的JsonConverter。它唯一的作用是在反序列化时选择抽象类的适当具体实现,并允许Json.NET继续它的工作 当我想序列化时,我的问题就来了。我根本不需要做任何定制的事情。我希望获得与使用JsonConvert.SerializeObject时完全相同的行为,而不使用自定义JsonConverter 但是,由于我使用自定义JsonConverter类来满

我有一个复杂的对象图,我正在用Json.NET序列化/反序列化它。有些对象派生自抽象类,因此为了使反序列化正常工作,我需要创建一个自定义的
JsonConverter
。它唯一的作用是在反序列化时选择抽象类的适当具体实现,并允许Json.NET继续它的工作

当我想序列化时,我的问题就来了。我根本不需要做任何定制的事情。我希望获得与使用
JsonConvert.SerializeObject
时完全相同的行为,而不使用自定义
JsonConverter

但是,由于我使用自定义JsonConverter类来满足反序列化需求,因此我不得不提供一个
WriteJson
实现。因为WriteJson是抽象的,所以我不能只调用
base.WriteJson
,但我想从本质上做到这一点。所以我的问题是,我在这个方法中加入了什么来获得简单的默认行为?换言之:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    // What goes here to get default processing?
}
在自定义中,重写并返回false:

public override bool CanWrite { get { return false; } }

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    throw new NotImplementedException();
}
然后您可以从
WriteJson
抛出一个异常,因为它不会被调用

(类似地,要在de序列化期间获取默认行为,请重写并返回
false


请注意,同样的方法也可以用于(中介绍),因为它只是
JsonConverter
的一个子类,引入了和的类型安全版本。

太明显了:)。谢谢哦,那会写。。。。遗憾的是,即使在医生的报告中也没有说得更清楚;)。完全忘记了查看基类型。谢谢,为什么不在序列化程序设置中打开
typenameholling
Auto
?如果实例类型与其声明的属性类型(将是接口或基类类型)不同,这将添加“$type”属性。这不正是你想要的吗?