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

naw*_*fal 3 c# reflection inheritance types descendant

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

class Base
{

}

class FirstClass : Base
{

}

class SecondClass : FirstClass
{

}
Run Code Online (Sandbox Code Playgroud)

现在

var directOnes = assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(Base)));
Run Code Online (Sandbox Code Playgroud)

应该只返回FirstClass而不是SecondClass.有没有办法找出来?

Mat*_*son 6

而不是IsSubclassOf()你可以使用Type.BaseType

例如

var directOnes = assembly.GetTypes().Where(t => t.BaseType == (typeof(Base)));
Run Code Online (Sandbox Code Playgroud)

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