假设我有一个如下所示的类:
class Derived : // some inheritance stuff here
{
}
我想在我的代码中检查类似的内容:
Derived is SomeType;
但看起来像is
运算符需要 Derived 是 Derived 类型的变量,而不是 Derived 本身。
我不想创建 Derived 类型的对象。
如何确保派生继承SomeType
没有实例化它?
P.S.如果有帮助的话,我想要类似的东西where
关键字与泛型一起使用。
EDIT:
如同this https://stackoverflow.com/a/1528695/279982答案,但它正在检查一个对象。我想检查课程本身。
要检查可分配性,您可以使用Type.IsAssignableFrom http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx method:
typeof(SomeType).IsAssignableFrom(typeof(Derived))
这将像您期望的类型相等、继承关系和接口实现一样工作,但是not当您正在寻找跨显式/隐式转换运算符的“可分配性”时。
要检查严格继承,您可以使用Type.IsSubclassOf http://msdn.microsoft.com/en-us/library/system.type.issubclassof.aspx:
typeof(Derived).IsSubclassOf(typeof(SomeType))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)