Вы можете использовать оператор LINQ. Я не уверен на 100%, что вы пытаетесь сделать, но вы можете сделать что-то вроде этого.
Assembly.GetTypes().Where(type => type.IsSubclassOf(SomeType) && type.Whatever);
Редактировать
Если обычный Assembly.GetTypes()
не возвращает вложенный класс, вы можете перебрать массив и добавить все, что вы найдете в CurrentType.GetNestedTypes()
, в массив. как
var allTypes = new List<Type>();
var types = Assembly.GetTypes();
allTypes.AddRange(types);
foreach(var type in types)
{
allTypes.AddRange(type.GetNestedTypes());
}