internal static SamplingAlgorithm DeserializeSamplingAlgorithm(JsonElement element) { if (element.TryGetProperty("samplingAlgorithmType", out JsonElement discriminator)) { switch (discriminator.GetString()) { case "Bayesian": return(BayesianSamplingAlgorithm.DeserializeBayesianSamplingAlgorithm(element)); case "Grid": return(GridSamplingAlgorithm.DeserializeGridSamplingAlgorithm(element)); case "Random": return(RandomSamplingAlgorithm.DeserializeRandomSamplingAlgorithm(element)); } } SamplingAlgorithmType samplingAlgorithmType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("samplingAlgorithmType")) { samplingAlgorithmType = new SamplingAlgorithmType(property.Value.GetString()); continue; } } return(new SamplingAlgorithm(samplingAlgorithmType)); }
internal static ImageSweepSettings DeserializeImageSweepSettings(JsonElement element) { Optional <EarlyTerminationPolicy> earlyTermination = default; ImageSweepLimitSettings limits = default; SamplingAlgorithmType samplingAlgorithm = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("earlyTermination")) { if (property.Value.ValueKind == JsonValueKind.Null) { earlyTermination = null; continue; } earlyTermination = EarlyTerminationPolicy.DeserializeEarlyTerminationPolicy(property.Value); continue; } if (property.NameEquals("limits")) { limits = ImageSweepLimitSettings.DeserializeImageSweepLimitSettings(property.Value); continue; } if (property.NameEquals("samplingAlgorithm")) { samplingAlgorithm = new SamplingAlgorithmType(property.Value.GetString()); continue; } } return(new ImageSweepSettings(earlyTermination.Value, limits, samplingAlgorithm)); }
void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) { writer.WriteStartObject(); writer.WritePropertyName("samplingAlgorithmType"); writer.WriteStringValue(SamplingAlgorithmType.ToString()); writer.WriteEndObject(); }
public ImageSweepSettings(ImageSweepLimitSettings limits, SamplingAlgorithmType samplingAlgorithm) { if (limits == null) { throw new ArgumentNullException(nameof(limits)); } Limits = limits; SamplingAlgorithm = samplingAlgorithm; }
internal static GridSamplingAlgorithm DeserializeGridSamplingAlgorithm(JsonElement element) { SamplingAlgorithmType samplingAlgorithmType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("samplingAlgorithmType")) { samplingAlgorithmType = new SamplingAlgorithmType(property.Value.GetString()); continue; } } return(new GridSamplingAlgorithm(samplingAlgorithmType)); }
internal static RandomSamplingAlgorithm DeserializeRandomSamplingAlgorithm(JsonElement element) { Optional <RandomSamplingAlgorithmRule> rule = default; Optional <int?> seed = default; SamplingAlgorithmType samplingAlgorithmType = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("rule")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } rule = new RandomSamplingAlgorithmRule(property.Value.GetString()); continue; } if (property.NameEquals("seed")) { if (property.Value.ValueKind == JsonValueKind.Null) { seed = null; continue; } seed = property.Value.GetInt32(); continue; } if (property.NameEquals("samplingAlgorithmType")) { samplingAlgorithmType = new SamplingAlgorithmType(property.Value.GetString()); continue; } } return(new RandomSamplingAlgorithm(samplingAlgorithmType, Optional.ToNullable(rule), Optional.ToNullable(seed))); }
void IUtf8JsonSerializable.Write(Utf8JsonWriter writer) { writer.WriteStartObject(); if (Optional.IsDefined(Rule)) { writer.WritePropertyName("rule"); writer.WriteStringValue(Rule.Value.ToString()); } if (Optional.IsDefined(Seed)) { if (Seed != null) { writer.WritePropertyName("seed"); writer.WriteNumberValue(Seed.Value); } else { writer.WriteNull("seed"); } } writer.WritePropertyName("samplingAlgorithmType"); writer.WriteStringValue(SamplingAlgorithmType.ToString()); writer.WriteEndObject(); }
internal ImageSweepSettings(EarlyTerminationPolicy earlyTermination, ImageSweepLimitSettings limits, SamplingAlgorithmType samplingAlgorithm) { EarlyTermination = earlyTermination; Limits = limits; SamplingAlgorithm = samplingAlgorithm; }