编辑:澄清问题:
我已经重写了基类型的 JsonConverter (通过应用于[JsonConverter(typeof(TConverter))]超类),但是当直接反序列化子类型时,我想使用 STANDARD 序列化(即没有自定义转换器)来反序列化我的派生对象。如何指定在反序列化方法中使用的标准序列化,就好像我没有覆盖 JsonConverter 一样?
我正在使用弹性搜索,无法使用 JsonConverter 的自定义实现调用 JsonConvert.DeserializeObject,并且必须依赖 Elastic 的属性来使用我的转换器。
但是,使用此转换器作为属性似乎也会影响所有子类,但我只是希望它们使用标准转换器,这样我就不必为每个实现都实现 JsonConverter 。
这是我希望它看起来的类/逻辑:
[Route("test")]
[HttpPost]
public HttpResponseMessage Test([FromBody] JToken json)
{
var res = json.ToObject<Product>(); // I want an object of ProductImpl type here
return Request.CreateResponse(res);
}
[JsonConverter(typeof(JsonProductConverted))]
public abstract class Product
{
}
public class ProductImpl : Product
{
}
public class JsonProductConverted : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override …Run Code Online (Sandbox Code Playgroud)