次のクラス階層を考えてみましょう: 基本クラス A、A から継承されたクラス B と C、および B から継承されたクラス D。
public class A {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}
次のコードを使用して、D を含む A のすべてのサブクラスを見つけることができます。
var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));
ただし、A の直接のサブクラス (例では B と C) のみを検索し、A から直接継承されていないすべてのクラス (D など) を除外する必要があります。それを行う方法はありますか?