internal static BackupPolicy DeserializeBackupPolicy(JsonElement element) { if (element.TryGetProperty("type", out JsonElement discriminator)) { switch (discriminator.GetString()) { case "Continuous": return(ContinuousModeBackupPolicy.DeserializeContinuousModeBackupPolicy(element)); case "Periodic": return(PeriodicModeBackupPolicy.DeserializePeriodicModeBackupPolicy(element)); } } BackupPolicyType type = default; Optional <BackupPolicyMigrationState> migrationState = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("type")) { type = new BackupPolicyType(property.Value.GetString()); continue; } if (property.NameEquals("migrationState")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } migrationState = BackupPolicyMigrationState.DeserializeBackupPolicyMigrationState(property.Value); continue; } } return(new BackupPolicy(type, migrationState.Value)); }
internal static ContinuousModeBackupPolicy DeserializeContinuousModeBackupPolicy(JsonElement element) { BackupPolicyType type = default; Optional <BackupPolicyMigrationState> migrationState = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("type")) { type = new BackupPolicyType(property.Value.GetString()); continue; } if (property.NameEquals("migrationState")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } migrationState = BackupPolicyMigrationState.DeserializeBackupPolicyMigrationState(property.Value); continue; } } return(new ContinuousModeBackupPolicy(type, migrationState.Value)); }