How to find all direct subclasses of a class with .NET Reflection
.net, c#, reflection
Solution
For each of those types, check if
type.BaseType == typeof(A)
Or, you can put it directly inline:
var types = assembly.GetTypes().Where(t => t.BaseType == typeof(baseType));
Problem
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?