我需要确定一个对象在其继承层次结构中是否具有特定类型,但是我找不到执行此操作的好方法。
我的类的一个非常基本的示例版本是:
Public Class Domain
End Class
Public Class DerivedOne
Inherits Domain
End Class
Public Class DerivedTwo
Inherits DerivedOne
End Class
Public Class DerivedThree
Inherits Domain
End Class
以下确实有效,但我认为它不是很优雅。此外,创建的继承级别越多,需要进行的检查就越多,并且很容易忘记需要更新这段代码。
If GetType(T) Is GetType(Domain) OrElse _
GetType(T).BaseType Is GetType(Domain) OrElse _
GetType(T).BaseType.BaseType Is GetType(Domain) Then
End If
有没有办法得到“域的类型在 T 的继承层次结构中的任何位置”?
(欢迎使用 C# 或 VB.NET 回答)
更新
由于我自己的愚蠢,我错过了一点重要信息!
T 是一个 Type 对象(来自类的泛型类型)
最佳答案
您可以使用 Type.IsAssignableFrom
方法。
在 VB 中:
If GetType(Domain).IsAssignableFrom(GetType(DerivedThree)) Then
在 C# 中:
if (typeof(Domain).IsAssignableFrom(typeof(DerivedThree)))
关于c# - 如何判断一个类型是否在继承层次中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859728/