25

次のクラス階層を考えてみましょう: 基本クラス 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 など) を除外する必要があります。それを行う方法はありますか?

4

3 に答える 3

5

そのためにType.BaseTypeを使用します。ドキュメントから:

基本型は、現在の型が直接継承する型です。Object は基本型を持たない唯一の型であるため、Object の基本型として null が返されます。

于 2013-04-16T13:50:06.250 に答える