J'ai cette fonction:tableau Cast dans la variable d'objet à saisir System.Type variables
Public Sub DoStuff(ByVal type as System.Type, ByVal value as Object)
End Sub
L'argument de la 'valeur' est toujours un tableau du même type que le 'type'. Comment puis-je faire défiler les valeurs du tableau?
Je voudrais pouvoir faire quelque chose comme ceci:
DoStuff(GetType(Integer), New Integer(){1,2,3})
Public Sub DoStuff(ByVal type as System.Type, ByVal value as Object)
//Strongly types arr as Integer()
Dim arr = SomeCast(type, value)
For Each i in arr
//Do something with i
Next
End Sub
Modifier Ok, je pense que je vais ajouter plus de détails afin que vous puissiez voir ce que je suis en train de faire. J'ai un objet qui capture les valeurs revenant d'une autre page. Une fois que je les ai capturés, je veux parcourir la propriété 'Values'. Donc DoStuff() ci-dessus serait appelé pour chaque objet dictionnaire dans 'Valeurs'. Si la valeur dans le dictionnaire objct est un tableau, je veux également faire une boucle. Je sauvais le type ajouté par l'appel de fonction générique en tant que System.Type, mais peut-être que ce n'est pas la voie à suivre. Comment puis-je écrire ceci afin que je puisse sauvegarder le type du tableau et faire une boucle dans le tableau plus tard?
Public Class PopUpReturnValues
Implements IPopUpReturnValues
Public Sub AddValue(Of T As Structure)(ByVal name As String, ByVal value As T) Implements IPopUpReturnValues.AddValue
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(T), .Value = value, .IsArray = False})
End Sub
Public Sub AddArray(Of T As Structure)(ByVal name As String, ByVal values As T()) Implements IPopUpReturnValues.AddArray
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(T), .Value = values, .IsArray = True})
End Sub
Public Sub AddStringValue(ByVal name As String, ByVal value As String) Implements IPopUpReturnValues.AddStringValue
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(String), .Value = value, .IsArray = False})
End Sub
Public Sub AddStringArray(ByVal name As String, ByVal values As String()) Implements IPopUpReturnValues.AddStringArray
_values.Add(name, New PopUpReturnValue() With {.UnderlyingType = GetType(String), .Value = values, .IsArray = True})
End Sub
Private _values As New Dictionary(Of String, PopUpReturnValue)
Public ReadOnly Property Values() As IDictionary(Of String, PopUpReturnValue)
Get
Return _values
End Get
End Property
Public Class PopUpReturnValue
Public UnderlyingType As Type
Public Value As Object
Public IsArray As Boolean
End Class
End Class
Ce n'est pas complètement possible et cela n'a pas vraiment de sens. Qu'essayez-vous de faire? – SLaks
Il y a très peu de cas que j'ai jamais vu où System.Type devrait jamais être utilisé en dehors de la réflexion. Même avant que nous ayons des génériques, il y avait encore de meilleures façons de faire ce que vous faites probablement. –
Ok ... qu'est-ce qu'ils sont? – adam0101