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?
Just compare them appropriately:
For each of those types, check if
Or, you can put it directly inline:
Use Type.BaseType for that. From the documentation: