2009-02-10 2 views
0

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

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

System.Reflection.Assembly 

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

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

Как я могу перечислить типы Ассамблеи, чтобы получить ссылку сотруднику, первокурснику и студенту?

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

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

ответ

7

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

(Refactored для удобства чтения.)

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

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

+0

Спасибо Джон. Это выглядит хорошо. –

Смежные вопросы