The json structures come over from network like this:
{
  type: "a",
  specialPropA: "propA"
}
{
  type: "b",
  specialPropB: 1
}
I am trying to deserialize them as top level objects with a custom JsonConverter. I have the following hierarchy and annotate the interface with a custom converter. In the client I use IBase as a type paratemer for the a deserializer helper method.
[JsonConverter(typeof(MyJsonConverter))]
public interface IBase 
{
  string type { get; }
}
public class DerivedA : IBase
{
  string type => "A";
  string specialPropA { get; set; }
}
public class DerivedB : IBase
{
  string type => "B";
  int specialPropB { get; set; }
}
Then the implementation of the JsonConverter.
public class MyJsonConverter
{
   public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
   {
        JObject jsonObject = JObject.Load(reader);
        if (type == 'A') return JObject.toObject<DerivedA>();
        else return JObject.toObject<DerivedB>();
   }
}
However, it seems that I get stack overflow. The custom deseriazer seems to run over and over again. Is there a work-around?
 
    