43

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

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

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

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

GetBaseしかし、適切な方法がないようです。

4

7 に答える 7

60

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

 Type superClass = myClass.GetType().BaseType;
于 2009-07-09T17:14:41.693 に答える
22
Type superClass = typeof(MyClass).BaseType;

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

Type baseClass = myObject.GetType().BaseType;

ドキュメンテーション

于 2009-07-09T17:13:50.840 に答える
5

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

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.CreateInstanceMSDNを参照してください。

于 2009-07-09T17:15:11.630 に答える
2

Type.BaseTypeプロパティはあなたが探しているものです

Type  superClass = typeof(MyClass).BaseType;
于 2009-07-09T17:14:06.830 に答える
2

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

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

于 2009-07-09T17:16:32.580 に答える
1

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

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

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

于 2015-09-22T10:12:44.037 に答える
-1

あなたはただベースを使うことができます。

于 2009-07-09T17:15:07.577 に答える