Using LINQ you can do this:
var lista = (from arquivo in AppDomain.CurrentDomain.GetAssemblies()
from tipo in arquivo.GetTypes()
where typeof(ClasseBase).IsAssignableFrom(tipo)
select tipo).ToArray();
See working on dotNetFiddle .
With LINQ using lambda expressions (created by AP Rod):
var teste = AppDomain.CurrentDomain.GetAssemblies().Select(x => x.GetTypes())
.SelectMany(x => x).Where(x => typeof(ClasseBase).IsAssignableFrom(x))
.ToArray();
No LINQ:
foreach(var arquivo in AppDomain.CurrentDomain.GetAssemblies()) {
foreach(var tipo in arquivo.GetTypes()) {
if (typeof(ClasseBase).IsAssignableFrom(tipo)) {
Console.WriteLine(tipo);
}
}
}
See running on dotNetFiddle .