问题
I need to get all types of an assembly that inherits some base class but only the first descendants. For instance if I have:
class Base
{
}
class FirstClass : Base
{
}
class SecondClass : FirstClass
{
}
Now
var directOnes = assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(Base)));
should return only FirstClass
and not SecondClass
. Is there a way to find out?
回答1:
Instead of IsSubclassOf()
you can use Type.BaseType
e.g.
var directOnes = assembly.GetTypes().Where(t => t.BaseType == (typeof(Base)));
(FYI: I don't think there's a way to find the interfaces that a type directly implements.)
来源:https://stackoverflow.com/questions/16476073/how-to-find-types-that-are-direct-descendants-of-a-base-class