Как получить все нижние типы в сборке?
Это сестринский вопрос к этому
Если у меня есть экземпляр
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. Это будет немного более болезненным.)