如何查找作为基类直接后代的类型?

时间:2013-05-10 05:58:06

标签: c# inheritance reflection types descendant

我需要获得所有类型的程序集,它继承了一些基类,但只有第一个后代。例如,如果我有:

class Base
{

}

class FirstClass : Base
{

}

class SecondClass : FirstClass
{

}

现在

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

应仅返回FirstClass而不是SecondClass。有没有办法找出来?

1 个答案:

答案 0 :(得分:6)

您可以使用Type.BaseType

而不是IsSubclassOf()

e.g。

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

(仅供参考:我认为没有办法找到类型直接实现的 interfaces 。)