Отражение - это технология .NET - это не относится ни к VB.NET, ни к C#.
Учитывая объект, о, используйте
o.GetType().GetGenericArguments()(0)
Однако, вероятно, это плохая идея явно Меняйте поведение в зависимости от типа. Если вам нужно делать разные вещи, основанные на класс «А» против класса «B», то вы должны использовать виртуальные методы или свойства, и переопределить их в производных типов:
Public MustInherit Class BaseClass
Public MustOverride Function OneMethodTwoWays() As Integer
Public MustOverride ReadOnly Property OnePropertyTwoWays() As Integer
End Class
Public Class DerivedClass1
Inherits BaseClass
Public Overrides Function OneMethodTwoWays() As Integer
Return 1 + 1
End Function
Public Overrides ReadOnly Property OnePropertyTwoWays() As Integer
Get
Return 1 + 1
End Get
End Property
End Class
Public Class DerivedClass2
Inherits BaseClass
Public Overrides Function OneMethodTwoWays() As Integer
Return 2 * 1
End Function
Public Overrides ReadOnly Property OnePropertyTwoWays() As Integer
Get
Return 2 * 1
End Get
End Property
End Class
Public Class MyGeneric(Of T As BaseClass)
Public Function DoTheyMatch(ByVal a As T, ByVal b As T) As Boolean
Return a.OneMethodTwoWays() = b.OnePropertyTwoWays
End Function
End Class
Спасибо, именно то, что мне нужно. – link664