2009-07-09 8 views

Répondre

2
Assembly assembly = typeof(DataSet).Assembly; // etc 
foreach (Type type in assembly.GetTypes()) 
{ 
    if (type.BaseType == null) 
    { 
     Console.WriteLine(type.Name); 
    } 
    else 
    { 
     Console.WriteLine(type.Name + " : " + type.BaseType.Name); 
    } 
} 

Notez que les génériques et les types imbriqués ont des noms géniaux, tout vous voudrez peut-être utiliser FullName pour inclure l'espace de noms.

+0

Non. Pas de devoirs. Sondez mes 201 questions - pas un étudiant. Juste votre codeur moyen surmené/sous-payé. – BuddyJoe

1

Assembly.GetTypes et Type.BaseType:

Assembly a; 
foreach(var type in a.GetTypes()) { 
    Console.WriteLine(
     String.Format("{0} : {1}", 
      type.Name, 
      type.BaseType == null ? String.Empty : type.BaseType.Name 
     ); 
} 
+0

Attention! les interfaces peuvent ne pas avoir de BaseType; ni "objet" –

+0

@Marc: Bonne prise. – jason

3
foreach(Type type in assembly.GetTypes()) { 
    var isChild = type.IsSubclassOf(typeof(parentClass)) 
} 

Référence de MSDN.

+0

+1 - informations supplémentaires cool. ne testera pas les relations Subclass/Superclass sur mon application actuelle, mais merci. – BuddyJoe

+0

Oh, j'ai mal lu votre question. Content que cela ait aidé. –

Questions connexes