2009-02-10 7 views
0

Je tente d'utiliser un type inconnu dans un pour chaque boucle selon le code suivant:réflexion VB pour chaque boucle

private sub ReflectThis(ByVal rawData As Object()) 
    Dim dataType As Type = rawData(0).GetType() 
    Dim properties As PropertyInfo() = dataType.getProperties() 
    For Each item As dataType In rawData ''//AAAA 
    For Each property As System.Reflection.PropertyInfo properties 
     ''//reflected code use here 

La question que je reçois est sur la ligne marquée AAAA. Il se plaint que 'dataType' n'est pas déclaré, ce que je considère comme une classe incorrecte.

L'intention est d'appeler un service Web ailleurs, et quel que soit le service Web que j'appelle, utilisez la réflexion pour ajouter les informations de l'objet struct structuré résultantes à une base de données.

, le cas échéant, les restrictions à faire quelque chose comme

 
Dim myObject As variableInstanceOfTypeObjectHere 

ou suis-je faire une erreur plus fondamentale? Si j'ai raison, quelles sont les solutions de rechange, le cas échéant?

Répondre

2

Lorsque vous déclarez une variable "Comme" un type, cela signifie que vous connaissez le type à la compilation temps. Cela permet au compilateur de vérifier ce que vous faites avec. Dans ce cas, ne sais pas connaître le type au moment de la compilation - vous l'obtenez au moment de l'exécution. Tout ce que vous savez, c'est que chaque objet est un objet - donc ne spécifiez pas le type (comme suggéré par Joel) ou spécifiez-le comme objet:

For Each item As Object In rawData ''//AAAA 
0

Il suffit de ne pas préciser le type:

For Each item in rawData 
Questions connexes