using System.Collections.Generic;
using System.Text.Json.Serialization;
public static void Main()
var extension = new DerivedExtensionA();
extension.Properties.Add("SomeKey", "SomeValue");
var allExtensions = new List<Extension>() { extension };
string extensionSerialized =
JsonSerializer.Serialize(
Console.WriteLine(extensionSerialized);
Console.WriteLine("-----------");
string allExtensionsSerialized =
JsonSerializer.Serialize(
allExtensions, allExtensions.GetType());
Console.WriteLine(allExtensionsSerialized);
public abstract class Extension
public string Name { get; protected internal set; }
public class DerivedExtensionA : Extension
public DerivedExtensionA()
this.Name = "DerivedExtensionA";
Properties = new Dictionary<string, string>();
public Dictionary<string, string> Properties { get; protected internal set; }