Se non ha senso di lanciare un oggetto a un tipo variabile (un tipo sconosciuto al momento della compilazione). L'intero punto di lancio è specificare il tipo esatto. Sospetto, tuttavia, che piuttosto che utilizzare un oggetto Type
, ciò di cui hai veramente bisogno è un metodo generico o una classe generica. Per esempio:
Public Function DoSomethingGenerically(Of T)(MyParameter As MyType) As T
Return CType(MyParameter.MyProperty, T)
End Function
Questo è un metodo davvero inutile, dal momento che tutto ciò che fa è gettata la proprietà e restituirlo come quel tipo, ma dimostra come si può lanciare a digitare T
senza sapere che cosa, in particolare, T
accade a essere. Poi, si può chiamare in questo modo:
Dim x As New MyType()
Dim y As MyType2 = DoSomethingGenerically(Of MyType2)(x)
Questo è esattamente come la classe List(Of T)
, e altre classi generiche simili sono implementati. Tranne, invece di fare un singolo metodo generico, fanno tutta la classe generica, per esempio:
Public Class MyList(Of T)
Public Sub Add(item As T)
' ...
End Sub
End Class
fonte
2013-03-06 16:23:21
'CType' viene utilizzato per indicare al compilatore quale tipo è un oggetto, così' 'expression' e type' deve essere noto al momento della compilazione ** **. Tuttavia, quale errore ottieni? –
E DOVE memorizzerai il risultato se è sconosciuto fino al momento dell'esecuzione? Per questo tipo di conversione puoi semplicemente affidarti a ** System.Convert.ChangeType **. Questo è un altro problema XY? –
@TimSchmelter, l'errore è "Tipo 'objType' non è definito" – Brij