Как получить все нижние типы в сборке?

Это сестринский вопрос к этому

Если у меня есть экземпляр

System.Reflection.Assembly

и у меня есть следующая модель:

class Person {}
class Student : Person {}
class Freshman : Student {}
class Employee : Person {}
class PersonList : ArrayList {}
class StudentList : PersonList {}

Как я могу перечислить типы сборки, чтобы получить ссылку на Employee, Freshman и StudentList?

Я хотел бы иметь возможность перечислять все нижние типы для любой данной сборки, как в примере выше.

Спасибо за ваше время:)

1 ответ

Решение

Итак, вы хотите найти все типы, из которых нет других типов в сборке, верно?

(Рефакторинг для удобства чтения.)

var allTypes = assembly.GetTypes();
var baseTypes = allTypes.Select(type => type.BaseType);
var bottomTypes = allTypes.Except(baseTypes);

(Дайте мне знать, если вы хотите версию.NET 2.0. Это будет немного более болезненным.)

Другие вопросы по тегам