假设我有一个类似这样的类:
class Derived : // some inheritance stuff here
{
}
我想在我的代码中检查这样的内容:
Derived is SomeType;
但看起来像is
运算符需要Derived是Dervied类型的变量,而不是Derived本身。
我不想创建Derived类型的对象
如何确保Derived在没有实例化的情况下继承SomeType
?
P.S。如果有帮助,我想要where
关键字与泛型有关的内容。
修改
与this回答类似,但它正在检查对象。我想查看课程本身。
答案 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)