2009-07-02 15 views
5

私はVB.NETで次のようなことをしたいですか?「型」を引数として渡すことはできますか?

Function task(value as Object, toType as Type) 

    Return DirectCast(value, toType) 

End Function 
+1

Public Sub BindListControlToEnum(Of T)(ListCtrl As ListControl) Dim itemValues As Array = System.Enum.GetValues(GetType(T)) Dim itemNames As Array = System.Enum.GetNames(GetType(T)) For i As Integer = 0 To itemNames.Length - 1 Dim item As New ListItem(itemNames(i), itemValues(i)) ListCtrl.Items.Add(item) Next End Sub 

はこのようにそれを呼び出しますタスク機能? – Juliet

+0

それは明らかな回避策ではありませんか? –

答えて

12

はい。 System.Typeがあります。しかし、実際にはGenericをしたいかもしれません。あなたは

function task(of myType)(value as myType) as MyType 
    ''stuff 
    return value 
end function 
+0

ああ。最近私はC#に慣れています。 –

2

はい、しかし、あなたの要件に応じて、あなたはどのようなタイプのキャスト/ A変換を行うためにctype関数を使用することができます。 CTypeは有効な型変換がある限り動作しますが、DirectCastではvaluetoTypeである必要があります。

0

を使用したい

Function SomeFunction(Of T)(obj As Object) As T 
    '' Magic 
End Function 
2

グレート回答 - ここでは、同じことを行うための一般的な機能である:あなたが*に送信する前に、あなたのオブジェクト*をキャストしていないのはなぜ

BindDropdownToEnum(Of MyClass.MyEnum)(MyRadioButtonListControl) 
関連する問題