How to dynamically obtain non-generic types for a class?
===

How to dynamically obtain **all non-generic types** (Student, Teacher, Address) for the Person class.

Example code:

     [DataContract]
     [KnownType(typeof(Student))]
     [KnownType(typeof(Teacher))]
     public abstract class Person {
         [DataMember]
         public string Name { get; set; }

         [DataMember]
         public string Surname { get; set; }

         [DataMember]
         public Address _Address { get; set; }
     }