Json.net serialize / deserialize tipos derivados?

json.net (newtonsoft)
Estoy revisando la documentación pero no puedo encontrar nada sobre esta o la mejor manera de hacerlo.

public class Base { public string Name; } public class Derived : Base { public string Something; } JsonConvert.Deserialize<List>(text); 

Ahora tengo objetos derivados en la lista serializada. ¿Cómo deserializo la lista y recupero los tipos derivados?

Si está almacenando el tipo en su text (como debería ser en este escenario), puede usar el JsonSerializerSettings .

Ver: cómo deserializar JSON en IEnumerable con Newtonsoft JSON.NET

Debe habilitar el Manejo de nombre de tipo y pasarlo al (de) serializador como parámetro de configuración.

 Base object1 = new Base() { name = "Object1" }; Derived object2 = new Derived() { something = "Some other thing" }; List inheritanceList = new List() { object1, object2 }; JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; string Serialized = JsonConvert.SerializeObject(inheritanceList, settings); List deserializedList = JsonConvert.DeserializeObject>(Serialized, settings); 

Esto dará como resultado la desirialización correcta de las clases derivadas. Un inconveniente es que nombrará todos los objetos que está utilizando, por lo que nombrará la lista en la que está colocando los objetos.