通用参数:如何检查类型

时间:2014-02-01 16:28:22

标签: vb.net generics

如果我有以下功能:

Private Function AddObject(Of T As MyBaseClass)(pos As PointF, sz As SizeF) As T
End Function

如何检查函数内T的类型?例如,我有3个继承自MyBaseClass的类,即ShapeLabelRect。我尝试了以下两个版本:

If T Is Rect Then
If TypeOf T Is Rect Then

但两者都会产生错误。这里的语法是什么?

1 个答案:

答案 0 :(得分:0)

如果您只需要完全匹配,则可以使用:

GetType(T) Is GetType(Rect)

如果要与继承匹配,可以使用:

GetType(Rect).IsAssignableFrom(GetType(T))

虽然说实话,如果你必须分别处理每个子类,它不会是一种理想的通用方法。你能不在基类中添加一个抽象方法,而是在每个子类中实现它?