【发布时间】:2014-07-31 15:02:51
【问题描述】:
我有一个Object,它实际上是一个具有未知类型参数的泛型。如何将其转换为正确的泛型类型?例如,这是我的泛型:
Public Class MyGeneric(Of T)
Public Property Name As String
Public Sub New(ByVal withName As String)
Name = withName
End Sub
End Class
这是我想要做的:
Public Sub Main()
Dim a As Object = New MyGeneric(Of String)("a")
Dim b As Object = New MyGeneric(Of Integer)("b")
PrintName(a)
PrintName(b)
End Sub
Public Sub PrintName(ByVal forValue As Object)
Dim itsType = forValue.GetType()
If (itsType.IsGenericType() AndAlso itsType.GetGenericTypeDefinition() Is GetType(MyGeneric(Of ))) Then
Debug.Print(DirectCast(forValue, MyGeneric(Of )).Name)
End If
End Sub
为什么第一个MyGeneric(Of ) 对GetType() 的“命名类型”参数起作用,而第二个MyGeneric(Of ) 对DirectCast() 的“命名类型”参数不起作用?
【问题讨论】: