using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Text.Json.Serialization;
[System.Text.Json.Serialization.JsonDerivedType(typeof(MyCommand1), nameof(MyCommand1))]
[System.Text.Json.Serialization.JsonDerivedType(typeof(MyCommand2), nameof(MyCommand2))]
public interface IMyCommand
public class MyCommand1 : IMyCommand
public class MyCommand2 : IMyCommand
[System.Text.Json.Serialization.JsonPropertyName("id")]
public Guid Id { get; set; }
public string CompanyId { get; set; }
public List<IMyCommand> Commands { get; set; }
public MyClass(string companyId)
public static void Test()
string partitionKey = "Test";
var myclass = new MyClass(partitionKey)
Commands = new List<IMyCommand>
var json = JsonSerializer.Serialize(myclass);
var myclass2 = JsonSerializer.Deserialize<MyClass>(json);
var json2 = JsonSerializer.Serialize(myclass2);
Console.WriteLine(json2);
public static void Main()
Console.WriteLine("Environment version: {0} ({1}), {2}", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("{0} version: {1}", typeof(JsonSerializer).Namespace, typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");