我需要确定一个对象在其继承层次结构中是否具有特定类型,但是我找不到这样做的好方法。
我的课程的一个非常基本的示例版本是:
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 对象(来自类的泛型)