web-dev-qa-db-ja.com

C#:クラスの基本クラスをどのように取得しますか?

C#では、特定のクラスの基本クラスへの参照をどのように取得しますか?

たとえば、特定のクラスMyClassがあり、MyClass 'スーパークラスへの参照を取得するとします。

私はこのようなことを念頭に置いています:

Type  superClass = MyClass.GetBase() ;
// then, do something with superClass

ただし、適切なGetBaseメソッドがないようです。

37
JaysonFix

現在のクラスのタイプからのリフレクションを使用します。

 Type superClass = myClass.GetType().BaseType;
53
JoshJordan
Type superClass = typeof(MyClass).BaseType;

さらに、現在のオブジェクトのタイプがわからない場合は、GetTypeを使用してタイプを取得し、そのタイプのBaseTypeを取得できます。

Type baseClass = myObject.GetType().BaseType;

ドキュメント

21
Timothy Carter

これにより、ベースタイプ(存在する場合)が取得され、そのインスタンスが作成されます。

Type baseType = typeof(MyClass).BaseType;
object o = null;
if(baseType != null) {
    o = Activator.CreateInstance(baseType);
}

または、コンパイル時にタイプがわからない場合は、次のコードを使用します。

object myObject;
Type baseType = myObject.GetType().BaseType;
object o = null;
if(baseType != null) {
    o = Activator.CreateInstance(baseType);
}

見る - Type.BaseType および Activator.CreateInstance MSDNで。

5
jason

Type.BaseType プロパティが探しているものです。

Type  superClass = typeof(MyClass).BaseType;
2
heavyd

obj.baseは、派生オブジェクトobjのインスタンスから親オブジェクトへの参照を取得します。

typeof(obj).BaseTypeは、派生オブジェクトのインスタンスから親オブジェクトのタイプへの参照を取得しますobj

2
meklarian

クラスが別のクラスのサブクラスかどうかを確認する場合は、isを使用できます。

if (variable is superclass){ //do stuff }

ドキュメント: https://msdn.Microsoft.com/en-us/library/scekt9xw.aspx

1
VeYroN