csharp/Microsoft.Azure.Databricks.Client/Converters/DepedencyConverter.cs (37 lines of code) (raw):

using Microsoft.Azure.Databricks.Client.Models.UnityCatalog; using System; using System.Text.Json; using System.Text.Json.Nodes; using System.Text.Json.Serialization; namespace Microsoft.Azure.Databricks.Client.Converters; public class DepedencyConverter : JsonConverter<Dependency> { public override bool CanConvert(Type typeToConvert) { return typeof(Dependency).IsAssignableFrom(typeToConvert); } public override bool HandleNull => true; public override Dependency Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var dependency = JsonNode.Parse(ref reader)!.AsObject(); if (dependency.TryGetPropertyValue("table", out _)) { return dependency.Deserialize<TableDependency>(); } if (dependency.TryGetPropertyValue("function", out _)) { return dependency.Deserialize<FunctionDependency>(); } throw new NotSupportedException("Dependency not recognized"); } public override void Write(Utf8JsonWriter writer, Dependency value, JsonSerializerOptions options) { var node = value switch { TableDependency tab => JsonSerializer.SerializeToNode(tab), FunctionDependency fun => JsonSerializer.SerializeToNode(fun), _ => throw new NotImplementedException($"JsonConverter not implemented for type {value.GetType()}") }; node!.WriteTo(writer); } }