public static void Main()
UnwantedClass unwantedClass = new UnwantedClass
JsonSerializerSettings settings = new JsonSerializerSettings
TypeNameHandling = TypeNameHandling.All
string unwantedJson = JsonConvert.SerializeObject(unwantedClass, Formatting.Indented, settings);
Console.WriteLine(unwantedJson);
Dog dogTNHNone = JsonConvert.DeserializeObject<Dog>(unwantedJson);
Dog dogTNHAll = JsonConvert.DeserializeObject<Dog>(unwantedJson, settings);
unwantedClass = JsonConvert.DeserializeObject<UnwantedClass>(unwantedJson, settings);
Console.WriteLine("Function ends");
public abstract class Animal
public string Property1 { get;set; }
public class Dog : Animal
public string Property2 { get;set; }
public class UnwantedClass
private string property1;
public string Property1 {
get { return property1; }
Console.WriteLine("Unwanted class setter is called!");
Console.WriteLine("Unwanted class constructor is called!");