Test Net Core 3.1

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
					
public class Program
{
	public static void Main()
	{
		var extension = new DerivedExtensionA();
        extension.Properties.Add("SomeKey", "SomeValue");
		
		var allExtensions = new List<Extension>() { extension };
		
		string extensionSerialized =
                JsonSerializer.Serialize(
                    extension);
		
		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; }
    }
;