<PackageReference Include="System.ClientModel" Version="1.2.0" />

JsonModelConverter

public class JsonModelConverter : JsonConverter<IJsonModel<object>>
A generic converter which allows JsonSerializer to be able to write and read any models that implement IJsonModel<T>.
using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using System.Text.Json; using System.Text.Json.Serialization; namespace System.ClientModel.Primitives { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1, 1 })] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("The constructors of the type being deserialized are dynamically accessed and may be trimmed.")] public class JsonModelConverter : JsonConverter<IJsonModel<object>> { private ModelReaderWriterOptions _options { get; } public JsonModelConverter() : this(ModelReaderWriterOptions.Json) { } public JsonModelConverter(ModelReaderWriterOptions options) { _options = options; } public override bool CanConvert(Type typeToConvert) { return !Attribute.IsDefined(typeToConvert, typeof(JsonConverterAttribute)); } public override IJsonModel<object> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { IJsonModel<object> obj = ModelReaderWriter.GetObjectInstance(typeToConvert) as IJsonModel<object>; if (obj == null) throw new InvalidOperationException("Either " + typeToConvert.Name + " or the PersistableModelProxyAttribute defined needs to implement IJsonModel."); return (IJsonModel<object>)obj.Create(ref reader, _options); } public override void Write(Utf8JsonWriter writer, IJsonModel<object> value, JsonSerializerOptions options) { value.Write(writer, _options); } } }