public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var objectType = value.GetType(); try { _MigratedTypes.Value[objectType] = true; var obj = JObject.FromObject(value, serializer); obj[VersionMemberName.VersionPropertyName] = VersionMemberName.GetCurrentVersion(objectType); obj.WriteTo(writer); } finally { _MigratedTypes.Value[objectType] = false; } }