我想在VB.NET中做类似下面的事情,有可能吗?
Function task(value as Object, toType as Type)
Return DirectCast(value, toType)
End Function
答案 0 :(得分:13)
是。有System.Type。你可能实际上想要做Generic。
Function SomeFunction(Of T)(obj As Object) As T
'' Magic
End Function
答案 1 :(得分:2)
你想使用
function task(of myType)(value as myType) as MyType
''stuff
return value
end function
答案 2 :(得分:2)
很棒的答案 - 这是一个通用的功能:
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
这样称呼:
BindDropdownToEnum(Of MyClass.MyEnum)(MyRadioButtonListControl)
答案 3 :(得分:0)
是的,但是,根据您的要求,您可能希望使用CType进行任何类型的转换/转换。只要存在有效的类型转换,CType就会起作用,而DirectCast则要求value
属于toType
类型。
答案 4 :(得分:0)
我今天必须做类似的事情(基本上是从接受的答案中填写'' magic
):
Private Function Convert_Value_Or_Fallback(Of T)(ByRef value As Object, ByRef fallback As Object) As Object
Try
Return DirectCast(value, T)
Catch ex As Exception
Return fallback
End Try
End Function
'call it like this:'
Convert_Value_Or_Fallback(Of Double)(value, 0)