Quelle est la meilleure façon de faire une boucle dans un assemblage, et pour chaque classe de la liste d'assemblage c'est "SuperClasse"?.NET/C# - Aide à la réflexion - Classes dans un assemblage
Répondre
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.
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
);
}
Attention! les interfaces peuvent ne pas avoir de BaseType; ni "objet" –
@Marc: Bonne prise. – jason
foreach(Type type in assembly.GetTypes()) {
var isChild = type.IsSubclassOf(typeof(parentClass))
}
Référence de MSDN.
+1 - informations supplémentaires cool. ne testera pas les relations Subclass/Superclass sur mon application actuelle, mais merci. – BuddyJoe
Oh, j'ai mal lu votre question. Content que cela ait aidé. –
Non. Pas de devoirs. Sondez mes 201 questions - pas un étudiant. Juste votre codeur moyen surmené/sous-payé. – BuddyJoe