/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="obj">The object to serialize to JSON.</param> internal static void Serialize(JsonWriter writer, SafetyCheck obj) { var kind = obj.Kind; if (kind.Equals(SafetyCheckKind.EnsureAvailability)) { EnsureAvailabilitySafetyCheckConverter.Serialize(writer, (EnsureAvailabilitySafetyCheck)obj); } else if (kind.Equals(SafetyCheckKind.EnsurePartitionQuorum)) { EnsurePartitionQurumSafetyCheckConverter.Serialize(writer, (EnsurePartitionQurumSafetyCheck)obj); } else if (kind.Equals(SafetyCheckKind.EnsureSeedNodeQuorum)) { SeedNodeSafetyCheckConverter.Serialize(writer, (SeedNodeSafetyCheck)obj); } else if (kind.Equals(SafetyCheckKind.WaitForInbuildReplica)) { WaitForInbuildReplicaSafetyCheckConverter.Serialize(writer, (WaitForInbuildReplicaSafetyCheck)obj); } else if (kind.Equals(SafetyCheckKind.WaitForPrimaryPlacement)) { WaitForPrimaryPlacementSafetyCheckConverter.Serialize(writer, (WaitForPrimaryPlacementSafetyCheck)obj); } else if (kind.Equals(SafetyCheckKind.WaitForPrimarySwap)) { WaitForPrimarySwapSafetyCheckConverter.Serialize(writer, (WaitForPrimarySwapSafetyCheck)obj); } else if (kind.Equals(SafetyCheckKind.WaitForReconfiguration)) { WaitForReconfigurationSafetyCheckConverter.Serialize(writer, (WaitForReconfigurationSafetyCheck)obj); } else { throw new InvalidOperationException("Unknown Kind."); } }