C#では、特定のクラスの基本クラスへの参照をどのように取得しますか?
たとえば、特定のクラスがあり、スーパークラスMyClass
への参照を取得したいとしますMyClass
。
私はこのようなことを念頭に置いています:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
GetBase
しかし、適切な方法がないようです。
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のインスタンスから親オブジェクトの型への参照を取得します。
クラスが別のクラスのサブクラスであるかどうかを確認したい場合は、を使用できます。
if (variable is superclass){ //do stuff }
ドキュメント:https ://msdn.microsoft.com/en-us/library/scekt9xw.aspx
あなたはただベースを使うことができます。