2016-04-18 19 views
1

Abend zusammen,Schleife durch Eigenschaften vb.net

Ich Extrahieren von Daten aus einer API, welche Datensätze als Eigenschaften der Klasse stellt so wären ein Beispiel

For Each entry As Webservice.Names In objResponse.results 
    string = string & "'firstname'=" & entry.firstname 
    string = string & "'surname'=" & entry.surname 
next 

sind wir jetzt etwa 50 Einheiten haben in der Webservice, und jeder hat mindestens 10 "Felder" meine Frage ist kann ich Eigenschaften auf andere Weise aussetzen?

also konnte ich

For Each entry As Webservice.Names In objResponse.results 
    for each prop in entry.properties 
     string = string & "'" & prop.name & "'=" & entry.fields(prop.name) 
    next 
next 

oder ähnliches, kann ich nicht scheinen, um die Eigenschaften oben zu belichten, aber wirklich auf der Suche nach einem Weg, den ich handart nicht zum Einfügen jede Eigenschaft gegen die Saite habe zur Datenbank.

keine Gedanken darüber, wie dies innerhalb von VB zu erreichen, wenn die Eigenschaften wie oben Beispiel

nicht ausgesetzt sind, erhalten Liste der Eigenschaften und Reflexion mit ihren Werten

Dank im Voraus

+0

Warum können Sie nicht mit 'entry.Foo' oder' entry.fields (prop.name) 'in die db einfügen? Welcher Wert wird hinzugefügt, indem Sie sie woanders hin verschieben, wenn es nur für eine db-Operation ist? – Plutonix

+0

Danke für die Antwort, ich kann Entry.foo verwenden, aber das erfordert Codierung jeder Eigenschaft, ich habe eine Liste aller Eigenschaften und dort Datatype für andere Zwecke, also etwas etwas mehr Dynamik versucht, dass, wenn der Webservice erweitert (wie es manchmal), muss ich nicht umschreiben, um die Änderung aufzuheben. – NewbieFromHell

Antwort

1

Sie können.

For Each entry As Webservice.Names In objResponse.results 
    for each prop in entry.GetType().GetProperties() 
' use System.Reflection.BindingFlags to filter it. 
     string = string & "'" & prop.name & "'=" & prop.GetValue(entry,nothing) 
' use entry as first argument. it requires an instance of object to get 'property value 
    next 
next 
+0

Danke, ich werde dies ausprobieren und Sie wissen lassen, wie ich weitergehe – NewbieFromHell

+0

@NewbieFromHell OK. –