Рассмотрим следующую иерархию классов: базовый класс A, классы B и C, наследуемые от A и класса D, унаследованные от B.
public class A {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}
Я могу использовать следующий код, чтобы найти все подклассы A, включая D:
var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));
Но мне нужно найти только прямые подклассы A (B и C в примере) и исключить все классы, непосредственно не унаследованные от A (такие как D). Любая идея, как это сделать?