class Attribute1
{
}
class Attribute2 : Attribute1
{
}
class class1
{
    Attribute1 attr1;
}
class class2  : class1
{
    Attribute2 attr2;
}
var serializerSettings = new JsonSerializerSettings(){TypeNameHandling = TypeNameHandling.Objects};
class2 a = SomeValidObjectoftype Class2;
string serializedClass2 = JsonConvert.SerializeObject(a, serializerSettings);
var am =  JsonConvert.DeserializeObject<Class2>(serializedClass1);
All the above are JSON properties and objects.  What I am trying to do is serialize and deserialize and not lose the type.
While deserializing I lose the type of am.attr2.  Currently it is coming back as Attribute1. I want it as Attribute2.  Is that possible? If so could someone point me to the right way of doing it. I included SerializationSettings and still hit the same issue. 
 
    