不便と感じる私が変なのかもしれませんが....
VBでのキャストは Ctpeです。
Dim a As Object = New Integer
a = 34
Dim b As Integer = 3
b = CType(a, Integer)
第二引数は Object of Type が来ます。
Typeとあるから System.Typeと判断して
Dim a As Object = New Integer
a = 34
Dim b As Integer = 3
Dim T As Type = 3.GetType
T = Type.GetType("System.Integer")
b = CType(a, T)
のように、第二引数を変数とする怒られます。 変数で指定することは無理なようです。
ジェネリック指定での
<of T>
:;
b = CType(a, T)
だと当然可能です。
b = CType(a, b.gettype) と記述したいのですが、許してくれない。
そこで Case文を並べて
select case b.getType
case "System.Int16": b = CType(a,Int16)
case "System.Int32": b = CType(a,Int32)
case "System.Int64": b = CType(a,Int64)
:::
:::
end case
としているのですが、どうも不細工で冗長感が残ります。ジェネリックを使えということでしょうね。
できても良さそうな構文だと思うのですがねぇ。