Как получить все нижние типы в сборке? - PullRequest
0 голосов
/ 10 февраля 2009

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

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

System.Reflection.Assembly

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

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

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

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

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

1 Ответ

7 голосов
/ 10 февраля 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...