Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get inheritance tree of type

Possible Duplicate:
To get parent class using Reflection on C#

I am trying to find an easy way of getting the inheritance tree of a certain type using reflection in C#.

Let's say that I have the following classes;

public class A
{ }

public class B : A
{ }

public class C : B
{ }

How do I use reflection upon type 'C' to determine that its superclass is 'B', who in turn comes from 'A' and so on? I know that I can use 'IsSubclassOf()', but let's assume that I don't know the superclass that I am looking for.

like image 789
A.R. Avatar asked Apr 19 '11 13:04

A.R.


1 Answers

To get a type's immediate parent, you can use the Type.BaseType property. You can iteratively call BaseType until it returns null to walk up a type's inheritance hierarchy.

For example:

public static IEnumerable<Type> GetInheritanceHierarchy
    (this Type type)
{
    for (var current = type; current != null; current = current.BaseType)
        yield return current;
}

Do note that it isn't valid to use System.Object as the end-point because not all types (for example, interface types) inherit from it.

like image 63
Ani Avatar answered Oct 14 '22 23:10

Ani