如何检查一个类是否inheritance另一个类而不实例化它?
假设我有一个如下所示的类:
class Derived : // some inheritance stuff here { }
我想在我的代码中检查这样的事情:
Derived is SomeType;
但是看起来is
运算符需要派生typesvariablesDervied,而不是Derived本身。 我不想创buildDerivedtypes的对象。
我怎样才能确保DerivedinheritanceSomeType
而不实例化?
PS如果有帮助,我想像关键字与generics一样。
编辑:
类似于这个答案,但是它正在检查一个对象。 我想检查课程本身。
要检查可分配性,可以使用Type.IsAssignableFrom
方法:
typeof(SomeType).IsAssignableFrom(typeof(Derived))
这将按照您对types平等,inheritance关系和接口实现的期望进行工作,但是当您在显式/隐式转换运算符中查找“可分配性”时,则不会这样 。
要检查严格inheritance,可以使用Type.IsSubclassOf
:
typeof(Derived).IsSubclassOf(typeof(SomeType))
尝试这个
typeof(IFoo).IsAssignableFrom(typeof(BarClass));
这将告诉你BarClass(Derived)
是否实现IFoo(SomeType)
或不