C#では、特定のクラスの基本クラスへの参照をどのように取得しますか?
たとえば、特定のクラスMyClass
があり、MyClass
'スーパークラスへの参照を取得するとします。
私はこのようなことを念頭に置いています:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
ただし、適切なGetBase
メソッドがないようです。
現在のクラスのタイプからのリフレクションを使用します。
Type superClass = myClass.GetType().BaseType;
Type superClass = typeof(MyClass).BaseType;
さらに、現在のオブジェクトのタイプがわからない場合は、GetTypeを使用してタイプを取得し、そのタイプのBaseTypeを取得できます。
Type baseClass = myObject.GetType().BaseType;
これにより、ベースタイプ(存在する場合)が取得され、そのインスタンスが作成されます。
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で。
Type.BaseType プロパティが探しているものです。
Type superClass = typeof(MyClass).BaseType;
obj.baseは、派生オブジェクトobjのインスタンスから親オブジェクトへの参照を取得します。
typeof(obj).BaseTypeは、派生オブジェクトのインスタンスから親オブジェクトのタイプへの参照を取得しますobj。
クラスが別のクラスのサブクラスかどうかを確認する場合は、isを使用できます。
if (variable is superclass){ //do stuff }
ドキュメント: https://msdn.Microsoft.com/en-us/library/scekt9xw.aspx