Pergunta

O que é a melhor maneira de percorrer uma montagem, e para cada classe no rol de fora o é "SuperClass"?

Foi útil?

Solução

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);
    }
}

Note que os genéricos e tipos aninhados têm nomes funk, qualquer que você pode querer usar FullName para incluir o namespace.

Outras dicas

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

Referência de MSDN .

Assembly.GetTypes e 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
        );
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top