using System.Text.Json.Serialization;
Foo foo = new Foo { FooValue = 123 };
Bar bar = new Bar { BarValue = "Hello, Bar!" };
string fooJson = JsonSerializer.Serialize<Base>(foo);
string barJson = JsonSerializer.Serialize<Base>(bar);
Console.WriteLine($"Serialized Foo: {fooJson}");
Console.WriteLine($"Serialized Bar: {barJson}");
Base deserializedFoo = JsonSerializer.Deserialize<Base>(fooJson);
Base deserializedBar = JsonSerializer.Deserialize<Base>(barJson);
Console.WriteLine($"Deserialized Foo: {deserializedFoo.GetType().Name}");
Console.WriteLine($"Deserialized Bar: {deserializedBar.GetType().Name}");
[JsonDerivedType(typeof(Foo), "Foo")]
[JsonDerivedType(typeof(Bar), "Bar")]
public abstract class Base;
public abstract class Base1 : Base;
public int FooValue { get; set; }
public string BarValue { get; set; }