概要
/// <summary> /// 継承しているすべての基底クラスと実装しているすべてのインターフェイスの Type を返します /// </summary> public static IEnumerable<Type> GetParentTypes( this Type self ) { if ( self == null ) yield break; foreach ( var x in self.GetInterfaces() ) { yield return x; } var currentBaseType = self.BaseType; while ( currentBaseType != null ) { yield return currentBaseType; currentBaseType = currentBaseType.BaseType; } }
使用例
foreach ( var parentType in typeof( List<int> ).GetParentTypes() ) { Debug.Log( parentType ); }