Πώς να σειριοποιήσετε το αντικείμενο σε json με πληροφορίες τύπου χρησιμοποιώντας το Newtonsoft.Json;

Πώς να σειριοποιήσετε το αντικείμενο σε json με πληροφορίες τύπου χρησιμοποιώντας το Newtonsoft.Json;
var jsonSerializerSettings = new JsonSerializerSettings() { 
    TypeNameHandling = TypeNameHandling.All
};
var json = JsonConvert.SerializeObject(instance, jsonSerializerSettings);

http://james.newtonking.com/json/help/index.html?topic=html/SerializationSettings.htm


public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    var converters = serializer.Converters.Where(x => !(x is TypeInfoConverter)).ToArray();

    var jObject = JObject.FromObject(value);
    jObject.AddFirst(new JProperty("Type", value.GetType().Name));
    jObject.WriteTo(writer, converters);
}

Έχετε δοκιμάσει να δημιουργήσετε μια νέα παρουσία του JsonSerializer; , στη συνέχεια αντιγράφοντας όλους τους μετατροπείς από τον αρχικό σειριακό πρόγραμμα εκτός από τον μετατροπέα που προκαλεί την άπειρη αναδρομή;

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    JsonSerializerSettings settings = new JsonSerializerSettings
    {
        Converters = serializer.Converters.Where(s => !(s is TypeInfoConverter)).ToList()
        // also copy any other custom settings from the serializer you wish to pass through
        DateFormatHandling = serializer.DateFormatHandling,
        MissingMemberHandling = serializer.MissingMemberHandling,
        NullValueHandling = serializer.NullValueHandling,
        Formatting = serializer.Formatting
    };
    var localSerializer = JsonSerializer.Create(settings);

    var jObject = JObject.FromObject(value, localSerializer);
    jObject.AddFirst(new JProperty("Type", value.GetType().Name));
    jObject.WriteTo(writer);
}