如何检查一个类是否继承了另一个类而不实例化它
本文关键字:另一个 实例化 继承 一个 何检查 检查 是否 | 更新日期: 2023-09-27 18:19:25
假设我有一个这样的类:
class Derived : // some inheritance stuff here
{
}
我想在我的代码中检查如下内容:
Derived is SomeType;
但是看起来is
运算符需要Derived类型的变量,而不是Derived本身。我不想创建一个派生类型的对象。
我如何确保派生继承SomeType
没有实例化它?
注:如果它有帮助,我想要像where
关键字对泛型所做的那样。
编辑:
类似于这个答案,但它是在检查一个对象。我想检查类本身
要检查可分配性,您可以使用Type.IsAssignableFrom
方法:
typeof(SomeType).IsAssignableFrom(typeof(Derived))
对于类型相等、继承关系和接口实现,这将如你所期望的那样工作,但是当你在显式/隐式转换操作符之间寻找"可赋值性"时,不能。
检查严格继承,可以使用Type.IsSubclassOf
:
typeof(Derived).IsSubclassOf(typeof(SomeType))
试试这个
typeof(IFoo).IsAssignableFrom(typeof(BarClass));
这将告诉您BarClass(Derived)
是否实现了IFoo(SomeType)