using System.Collections.Generic;
public static void Main()
Base object1 = new Base() { Name = "Object1" };
Derived object2 = new Derived() { Something = "Some other thing" };
Derived2 object3 = new Derived2() { Something2 = "Some other thing 3", Test = new Test() { Id = 1 } };
List<Base> inheritanceList = new List<Base>() { object1, object2, object3 };
JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto };
string Serialized = JsonConvert.SerializeObject(inheritanceList, settings);
List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);
foreach (var item in deserializedList)
public string Name { get; set; }
public class Derived : Base
public string Something { get; set; }
public class Derived2 : Base
public string Something2 { get; set; }
public Test Test { get; set; }
public int Id { get; set; }