TypeクラスのIsSubclassOf()メソッドを使うことで、型があるクラスの派生クラスであるかどうかを判定できる。 ただし、このメソッドでは同じクラスを表す場合はFalseを返されるので、同じクラスを表すかどうかを判定する場合は、is演算子(C#)やIs演算子(VB.NET)を使って判定する必要がある。
Public Class ClassA End Class Public Class ClassB Inherits ClassA End Class Public Class ClassC Inherits ClassB End Class Public Class Test Public Shared Sub Main() Dim typeOfClassA As Type = GetType(ClassA) Dim typeOfClassB As Type = GetType(ClassB) Dim typeOfClassC As Type = GetType(ClassC) If typeOfClassA.IsSubclassOf(typeOfClassB) Then Console.WriteLine("{0}は{1}の派生クラスです。", typeOfClassA.Name, typeOfClassB.Name) If typeOfClassB.IsSubclassOf(typeOfClassA) Then Console.WriteLine("{0}は{1}の派生クラスです。", typeOfClassB.Name, typeOfClassA.Name) If typeOfClassC.IsSubclassOf(typeOfClassA) Then Console.WriteLine("{0}は{1}の派生クラスです。", typeOfClassC.Name, typeOfClassA.Name) If typeOfClassC.IsSubclassOf(typeOfClassB) Then Console.WriteLine("{0}は{1}の派生クラスです。", typeOfClassC.Name, typeOfClassB.Name) If typeOfClassC.IsSubclassOf(typeOfClassC) Then Console.WriteLine("{0}は{1}の派生クラスです。", typeOfClassC.Name, typeOfClassC.Name) End Sub End Class
public class ClassA {} public class ClassB : ClassA {} public class ClassC : ClassB {} public class Test { public static void Main() { Type typeOfClassA = typeof( ClassA ); Type typeOfClassB = typeof( ClassB ); Type typeOfClassC = typeof( ClassC ); if ( typeOfClassA.IsSubclassOf( typeOfClassB ) ) Console.WriteLine( "{0}は{1}の派生クラスです。", typeOfClassA.Name, typeOfClassB.Name ); if ( typeOfClassB.IsSubclassOf( typeOfClassA ) ) Console.WriteLine( "{0}は{1}の派生クラスです。", typeOfClassB.Name, typeOfClassA.Name ); if ( typeOfClassC.IsSubclassOf( typeOfClassA ) ) Console.WriteLine( "{0}は{1}の派生クラスです。", typeOfClassC.Name, typeOfClassA.Name ); if ( typeOfClassC.IsSubclassOf( typeOfClassB ) ) Console.WriteLine( "{0}は{1}の派生クラスです。", typeOfClassC.Name, typeOfClassB.Name ); if ( typeOfClassC.IsSubclassOf( typeOfClassC ) ) Console.WriteLine( "{0}は{1}の派生クラスです。", typeOfClassC.Name, typeOfClassC.Name ); } }
ClassBはClassAの派生クラスです。 ClassCはClassAの派生クラスです。 ClassCはClassBの派生クラスです。 Press any key to continue