Это зависит от того, что вы подразумеваете под "имеет тип B или D."1005 *
If GetType(B) Is GetType(TGeneric) Then
... they passed in B
Else
... they passed in a subclass
End If
Но это похоже на запах кода.Дженерики предназначены для вас , а не для того, что на самом деле является типом.Какова причина, вы должны знать?