Consider the following classes hierarchy: base class A, classes B and C inherited from A and class D inherited from B.

public class A     {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}

I can use following code to find all subclasses of A including D:

var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));

But I need to find only direct subclasses of A (B and C in example) and exclude all classes not directly inherited from A (such as D). Any idea how to do that?

Edit
Report