Array Objekte ?

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von w.stoellinger.

    Array Objekte ?

    Hallo,

    ich habe ein Verständnisproblem mit Array Objekten bzw. Vererbung.

    Folgender Code funktioniert einwandfrei, wird aber bei mehreren Attribut-Objekten schnell sehr unübersichtlich.

    VB.NET-Quellcode

    1. Dim AttributeArray(1) As CoCreate.Attribute
    2. Dim Attribute1 AsNew CoCreate.Attribute()
    3. Dim Attribute2 AsNew CoCreate.Attribute()
    4. Attribute1.name = "NAME"
    5. Attribute1.value = "123"
    6. AttributeArray(0) = Attribute1
    7. Attribute2.name = "BESCHREIBUNG"
    8. Attribute2.value = "abc"
    9. AttributeArray(1) = Attribute2
    10. Item.attributes = AttributeArray


    Ich habe daher versucht die Zuweisung der Werte an die Attribut Objekte in einer Schleife zu programmieren.

    VB.NET-Quellcode

    1. Dim Attribute_Array(10) As CoCreate.Attribute
    2. Dim Attribute AsNew CoCreate.Attribute()
    3. DoWhile (i < 10)
    4. Attribute.name = ("Name-" + i.ToString)
    5. Attribute.value = ("Value-" + i.ToString)
    6. AttributeArray(i) = Attribute
    7. i = i + 1
    8. Loop
    9. Item.attributes = AttributeArray


    Leider ohne Erfolg da es sich immer um das selbe Objekt handet das ich dem Array-Objekt zuweise und damit immer die letzte Wertzuweisung gewinnt. Als Neuling in objektorientierter Programmierung mache ich da sicher was grundlegend falsch und bin für jeden Tipp dankbar.


    Danke,
    Wolfgang
    Hast du bei AttributeArray(i) = Attribute den Unterstrich vergesssen?
    Außerdem mußt du INNERHALB der Schleife der Variable Attribute mit Attribute = New Cocreate.Attribute eine neue Instanz zuweisen. Sonst hast du tatsächlich ein einziges Objekt der Klasse Cocr.Attr, dessen Referenz du an alle Arraypositionen zuweist. Damit hat der letzte Eintrag gewonnen :)
    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Danke jetzt läufts! Hier der getestete Aufruf der CoCreate WebService Funktion "createItem", vielleicht kann sie ja mal jemand brauchen.

    VB.NET-Quellcode

    1. Public Function createItem() As String
    2. Dim ExceptionMessage As String
    3. Dim OSMServiceClient As New CoCreate.OSMServiceClient()
    4. OSMServiceClient.ClientCredentials.UserName.UserName = Benutzername
    5. OSMServiceClient.ClientCredentials.UserName.Password = Passwort
    6. Dim CreateItemRequest As New CoCreate.CreateItemRequest()
    7. Dim CreateItemResponse As New CoCreate.CreateItemResponse()
    8. Dim Item As New CoCreate.Item
    9. Dim ItemArray(0) As CoCreate.Item
    10. Item.className = "STAMMDATEN"
    11. Dim i As Integer = 0
    12. Dim AnzahlAttribute As Integer = 1
    13. Dim AttributTabelle(1, 1) As String
    14. AttributTabelle(0, 0) = "NAME"
    15. AttributTabelle(0, 1) = "123"
    16. AttributTabelle(1, 0) = "BESCHREIBUNG"
    17. AttributTabelle(1, 1) = "abc"
    18. Dim Attribute_Array(AnzahlAttribute) As CoCreate.Attribute
    19. Do While (i <= AnzahlAttribute)
    20. Dim Attribute As New CoCreate.Attribute()
    21. Attribute.name = AttributTabelle(i, 0)
    22. Attribute.value = AttributTabelle(i, 1)
    23. Attribute_Array(i) = Attribute
    24. i = i + 1
    25. Loop
    26. Item.attributes = Attribute_Array
    27. ItemArray(0) = Item
    28. CreateItemRequest.items = ItemArray
    29. Try
    30. CreateItemResponse = OSMServiceClient.createItem(CreateItemRequest)
    31. Return "createItem"
    32. Catch ex As Exception
    33. ExceptionMessage = (ex.Message)
    34. Return ExceptionMessage
    35. End Try
    36. End Function