如何检查一个类是否继承了另一个类而没有实例化它?

时间:2012-01-02 09:09:05

标签: c# inheritance types

假设我有一个类似这样的类:

class Derived : // some inheritance stuff here
{
}

我想在我的代码中检查这样的内容:

Derived is SomeType;

但看起来像is运算符需要Derived是Dervied类型的变量,而不是Derived本身。 我不想创建Derived类型的对象 如何确保Derived在没有实例化的情况下继承SomeType

P.S。如果有帮助,我想要where关键字与泛型有关的内容。
修改
this回答类似,但它正在检查对象。我想查看课程本身。

2 个答案:

答案 0 :(得分:252)

要检查可转让性,您可以使用Type.IsAssignableFrom方法:

typeof(SomeType).IsAssignableFrom(typeof(Derived))

当您在显式/隐式转换运算符中寻找“可分配性”时,这将按照您对类型相等,继承关系和接口实现的预期工作,但

要检查严格继承,可以使用Type.IsSubclassOf

typeof(Derived).IsSubclassOf(typeof(SomeType))

答案 1 :(得分:19)

试试这个

typeof(IFoo).IsAssignableFrom(typeof(BarClass));

这将告诉您BarClass(Derived)是否实现IFoo(SomeType)