Quiero hacer algo como lo siguiente en VB.NET, ¿es posible?¿Se puede pasar un "tipo" como argumento?
Function task(value as Object, toType as Type)
Return DirectCast(value, toType)
End Function
Quiero hacer algo como lo siguiente en VB.NET, ¿es posible?¿Se puede pasar un "tipo" como argumento?
Function task(value as Object, toType as Type)
Return DirectCast(value, toType)
End Function
Sí. Hay System.Type. Sin embargo, es posible que desee hacer un genérico.
Function SomeFunction(Of T)(obj As Object) As T
'' Magic
End Function
Oh doh. Estoy tan acostumbrado a C# en estos días. –
que desea utilizar el
function task(of myType)(value as myType) as MyType
''stuff
return value
end function
Sí, sin embargo, dependiendo de sus necesidades, es posible que desee utilizar CType hacer cualquier tipo de fundición/conversión. CType funcionará siempre que haya una conversión de tipo válida, mientras que DirectCast requiere que value
sea del tipo toType
.
Gran respuesta - He aquí una función genérica para hacer lo mismo:
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
llamada así:
BindDropdownToEnum(Of MyClass.MyEnum)(MyRadioButtonListControl)
¿Por qué no emitir su objeto * * antes de enviarlo a la Función de tarea? – Juliet
¿No es una solución obvia? –