のある値を受け入れていません可変型(コンパイル時に不明な型)。キャスティングの全体のポイントは、正確なタイプを指定することです。私は、Type
オブジェクトを使用するのではなく、実際に必要なのはジェネリックメソッドまたはジェネリッククラスであると考えています。例えば:それがないすべてのプロパティをキャストし、その型としてそれを返しますが、あなたが何を知らなくてもT
を型にキャストする方法を示し、具体的には、T
がに起こるされているので、本当に無意味な方法です
Public Function DoSomethingGenerically(Of T)(MyParameter As MyType) As T
Return CType(MyParameter.MyProperty, T)
End Function
さあ。その後、あなたはこのようにそれを呼び出すことができます。
Dim x As New MyType()
Dim y As MyType2 = DoSomethingGenerically(Of MyType2)(x)
正確にどのようにList(Of T)
クラスであり、および他の同様の一般的なクラスが実装されていること。代わりに、個々の方法は、一般的な作りで、彼らは、例えば、クラス全体がジェネリックにする、を除い:
Public Class MyList(Of T)
Public Sub Add(item As T)
' ...
End Sub
End Class
'CType' **は、コンパイル時に** expression''ので、オブジェクトがあるタイプコンパイラに伝えるために使用され、 'type'がが知らなければなりません。しかし、あなたはどんなエラーになりますか? –
実行時まで不明な場合はどこに結果を格納しますか?この種の変換では、単に** System.Convert.ChangeType **に依存することができます。これは別のXY問題ですか? –
@TimSchmelter、エラーは "タイプ 'objType'が定義されていません" – Brij