ato*_*erz 130 c# inheritance types
假设我有一个看起来像这样的类:
class Derived : // some inheritance stuff here
{
}
Run Code Online (Sandbox Code Playgroud)
我想在我的代码中检查这样的内容:
Derived is SomeType;
Run Code Online (Sandbox Code Playgroud)
但看起来像is运算符需要Derived是Dervied类型的变量,而不是Derived本身.我不想创建Derived类型的对象.
如何在SomeType不实例化的情况下确保Derived继承?
PS如果它有帮助,我想要一些where关键字与泛型有关的东西.
编辑:
类似于这个答案,但它正在检查一个对象.我想查看课程本身.
Ani*_*Ani 262
要检查可分配性,可以使用以下Type.IsAssignableFrom方法:
typeof(SomeType).IsAssignableFrom(typeof(Derived))
Run Code Online (Sandbox Code Playgroud)
这对于类型相等,继承关系和接口实现的期望是有效的,但是当您在显式/隐式转换运算符中寻找"可分配性"时却不行.
要检查严格继承,您可以使用Type.IsSubclassOf:
typeof(Derived).IsSubclassOf(typeof(SomeType))
Run Code Online (Sandbox Code Playgroud)
Har*_*san 19
试试这个
typeof(IFoo).IsAssignableFrom(typeof(BarClass));
Run Code Online (Sandbox Code Playgroud)
这会告诉你是否BarClass(Derived)器具IFoo(SomeType)与否