public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) { try { _isWriting = true; var jObject = Newtonsoft.Json.Linq.JObject.FromObject(value, serializer); jObject.AddFirst(new Newtonsoft.Json.Linq.JProperty(_discriminator, value.GetType().Name)); writer.WriteToken(jObject.CreateReader()); } finally { _isWriting = false; } }