2013-05-10 2 views
3

Мне нужно получить все типы сборки, которые наследуют некоторый базовый класс, но только первые потомки. Например, если у меня есть:Как найти типы, которые являются прямыми потомками базового класса?

class Base 
{ 

} 

class FirstClass : Base 
{ 

} 

class SecondClass : FirstClass 
{ 

} 

Теперь

var directOnes = assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(Base))); 

должен возвращать только FirstClass и не SecondClass. Есть ли способ узнать?

ответ

5

Вместо IsSubclassOf() вы можете использовать Type.BaseType

например

var directOnes = assembly.GetTypes().Where(t => t.BaseType == (typeof(Base))); 

(FYI:. Я не думаю, что есть способ, чтобы найти интерфейсов что тип непосредственно реализует)

+0

Brilliant, и работает :) – nawfal

+0

Хорошо, мне не нужно думать о интерфейсах в этот момент, так что все в порядке. – nawfal

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