Create/Initialize property array

Please support our VB.NET advertiser: Intel Parallel Studio Home
Reply

Join Date: Jul 2009
Posts: 2
Reputation: solano is an unknown quantity at this point 
Solved Threads: 0
solano solano is offline Offline
Newbie Poster

Create/Initialize property array

 
0
  #1
Jul 30th, 2009
Hi!

I have som auto generated (from xsd file, xsd.exe is used) Partial classes.

On of the properties is an arry, her is the code:

  1. Partial Public Class Betaleregrp4900
  2.  
  3. Private oversiktOverBetaleregrp4899Field() As OversiktOverBetaleregrp4899
  4.  
  5. Private betalingTotaldatadef21821Field As BetalingTotaldatadef21821
  6.  
  7. Private betalerAntalldatadef21822Field As BetalerAntalldatadef21822
  8.  
  9. Private gruppeidField As String
  10.  
  11. Public Sub New()
  12. MyBase.New
  13. Me.gruppeidField = "4900"
  14. End Sub
  15.  
  16. '''<remarks/>
  17. <System.Xml.Serialization.XmlElementAttribute("OversiktOverBetalere-grp-
  18. 4899")> _
  19. Public Property OversiktOverBetaleregrp4899() As
  20. OversiktOverBetaleregrp4899()
  21. Get
  22. Return Me.oversiktOverBetaleregrp4899Field
  23. End Get
  24. Set
  25. Me.oversiktOverBetaleregrp4899Field = value
  26. End Set
  27. End Property
This property is an array:

Private oversiktOverBetaleregrp4899Field() As OversiktOverBetaleregrp4899

I can write:

  1. Skjema_Obj.Betaleregrp4900.OversiktOverBetaleregrp4899 = New
  2. OversiktOverBetaleregrp4899() { _
  3. New OversiktOverBetaleregrp4899, _
  4. New OversiktOverBetaleregrp4899}

But my problem is, I don't know how many elements of the type
OversiktOverBetaleregrp4899 I have to create and then I do not know how many
New OversiktOverBetaleregrp4899 I need between {}.

I need to use an loop that generats the number of New
OversiktOverBetaleregrp4899 I need, but how can I do that? Is there another
way to do this?

Her is the start of the code for the partial class
OversiktOverBetaleregrp4899

  1. Partial Public Class OversiktOverBetaleregrp4899
  2.  
  3. Private betalerFodselsnummerdatadef2305Field As
  4. BetalerFodselsnummerdatadef2305
  5.  
  6. Private betalerOrganisasjonsnummerdatadef21820Field As
  7. BetalerOrganisasjonsnummerdatadef21820
  8.  
  9. Private betalerNavndatadef2303Field As BetalerNavndatadef2303
  10.  
  11. Private betalerAdressedatadef2304Field As BetalerAdressedatadef2304
  12.  
  13. Private betalerPostnummerdatadef11795Field As
  14. BetalerPostnummerdatadef11795
  15.  
  16. Private betalerPoststeddatadef11796Field As BetalerPoststeddatadef11796
  17.  
  18. Private betalingBelopdatadef2307Field As BetalingBelopdatadef2307
  19.  
  20. Private gruppeidField As String
  21.  
  22. Public Sub New()
  23. MyBase.New
  24. Me.gruppeidField = "4899"
  25. End Sub
  26.  
  27. '''<remarks/>
  28. <System.Xml.Serialization.XmlElementAttribute("BetalerFodselsnummer-
  29. datadef-2305")> _
  30. Public Property BetalerFodselsnummerdatadef2305() As
  31. BetalerFodselsnummerdatadef2305
  32. Get
  33. Return Me.betalerFodselsnummerdatadef2305Field
  34. End Get
  35. Set
  36. Me.betalerFodselsnummerdatadef2305Field = value
  37. End Set
  38. End Property

I hope somebody can help me with this! Thanks!
Reply With Quote Quick reply to this message  
Join Date: Feb 2009
Posts: 3,200
Reputation: sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of sknake has much to be proud of 
Solved Threads: 571
Sponsor
sknake's Avatar
sknake sknake is offline Offline
.NET Enthusiast

Re: Create/Initialize property array

 
0
  #2
Jul 30th, 2009
I don't understand what you're asking. Load the property array in to a List of generics, modify it, then call .ToArray() if you are having problems working with an array. Other than that I can't understand what you are asking.
Scott Knake
Custom Software Development
Apex Software, Inc.
Reply With Quote Quick reply to this message  
Join Date: Jul 2009
Posts: 2
Reputation: solano is an unknown quantity at this point 
Solved Threads: 0
solano solano is offline Offline
Newbie Poster

Re: Create/Initialize property array

 
0
  #3
Jul 31st, 2009
Originally Posted by sknake View Post
I don't understand what you're asking. Load the property array in to a List of generics, modify it, then call .ToArray() if you are having problems working with an array. Other than that I can't understand what you are asking.
I will try to explain it some more:

It is someting like this I want to do:
Dim i As Integer = 0
        Dim NumberOfCustomers = 3
        Dim OversiktOverBer_Tabell(NumberOfCustomers - 1) As OversiktOverBetaleregrp4899

        
        While NumberOfCustomers > 0

            Skjema_Obj.Betaleregrp4900.OversiktOverBetaleregrp4899 {New Oversik}


            Dim OversiktOverBet_Obj As New OversiktOverBetaleregrp4899

            Dim BetalerOrganisasjonsnummerdatadef21820_Obj As New BetalerOrganisasjonsnummerdatadef21820
            BetalerOrganisasjonsnummerdatadef21820_Obj.Value = "Test BetOrgNr (0) - 123456789"

            Dim BetalerFodselsnummerdatadef2305_Obj As New BetalerFodselsnummerdatadef2305
            BetalerFodselsnummerdatadef2305_Obj.Value = "Test BetFørslenr (0) - 07097645669"

            Dim BetalerNavndatadef2303_Obj As New BetalerNavndatadef2303
            BetalerNavndatadef2303_Obj.Value = "Test BetNavn (0) - Kari Normann"

            Dim BetalerAdressedatadef2304_Obj As New BetalerAdressedatadef2304
            BetalerAdressedatadef2304_Obj.Value = "Test BetAdr (0) - Flatbygdi"

            Dim BetalerPostnummerdatadef11795_Obj As New BetalerPostnummerdatadef11795
            BetalerPostnummerdatadef11795_Obj.Value = "Test BetPostNr (0) - 6893"

            Dim BetalerPoststeddatadef11796_Obj As New BetalerPoststeddatadef11796
            BetalerPoststeddatadef11796_Obj.Value = "Test BetPostSted (0) - Vik i Sogn"

            Dim BetalingBelopdatadef2307_Obj As New BetalingBelopdatadef2307
            BetalingBelopdatadef2307_Obj.Value = "2330"


            OversiktOverBet_Obj.BetalerOrganisasjonsnummerdatadef21820 = BetalerOrganisasjonsnummerdatadef21820_Obj
            OversiktOverBet_Obj.BetalerFodselsnummerdatadef2305 = BetalerFodselsnummerdatadef2305_Obj
            OversiktOverBet_Obj.BetalerNavndatadef2303 = BetalerNavndatadef2303_Obj
            OversiktOverBet_Obj.BetalerAdressedatadef2304 = BetalerAdressedatadef2304_Obj
            OversiktOverBet_Obj.BetalerPostnummerdatadef11795 = BetalerPostnummerdatadef11795_Obj
            OversiktOverBet_Obj.BetalerPoststeddatadef11796 = BetalerPoststeddatadef11796_Obj
            OversiktOverBet_Obj.BetalingBelopdatadef2307 = BetalingBelopdatadef2307_Obj

--> This is may problem, I have to do this another way. Is it possible to split this sentence. The array/list Skjema_Obj.Betaleregrp4900.OversiktOverBetaleregrp4899 must have in this case 3 OversiktOverBetaleregrp4899 objekst, and I have to say {New OversiktOverBetaleregrp4899, New OversiktOverBetaleregrp4899, New OversiktOverBetaleregrp4899}
but how do I do that when the number of objects is not static?

            Skjema_Obj.Betaleregrp4900.OversiktOverBetaleregrp4899 = New OversiktOverBetaleregrp4899() {New OversiktOverBetaleregrp4899}            Skjema_Obj.Betaleregrp4900.OversiktOverBetaleregrp4899(i) = OversiktOverBet_Obj

            OversiktOverBer_Tabell(i) = OversiktOverBet_Obj

            i = i + 1

            NumberOfCustomers = NumberOfCustomers - 1

        End While

I hope this made it clearer. Thanks!
Reply With Quote Quick reply to this message  
Join Date: Aug 2008
Posts: 710
Reputation: Teme64 will become famous soon enough Teme64 will become famous soon enough 
Solved Threads: 114
Teme64's Avatar
Teme64 Teme64 is offline Offline
Master Poster

Re: Create/Initialize property array

 
0
  #4
Aug 1st, 2009
Neither did I get this

But if you don't know the number of array elements at the compile time, pass it to the constructor of your (partial) class.

I would do something like this
  1. Partial Public Class CItem1
  2.  
  3. Public Prop1 As Integer
  4. Public Prop2 As String
  5.  
  6. Public Sub New(ByVal value1 As Integer, ByVal value2 As String)
  7. '
  8. Prop1 = value1
  9. Prop2 = value2
  10. End Sub
  11.  
  12. End Class
  13.  
  14. Partial Public Class CItem2
  15.  
  16. Public Prop3 As Integer
  17. Public Prop4() As CItem1
  18.  
  19. Public Sub New(ByVal value3 As Integer, ByVal NumOfElements As Integer)
  20. '
  21. Prop3 = value3
  22. ReDim Prop4(NumOfElements)
  23. End Sub
  24.  
  25. End Class
and use it
  1. Dim OneItem As CItem2
  2.  
  3. OneItem = New CItem2(3, 2) ' Now Prop3 has the value 3 and we have an uninitialized array with three CItem1s
  4.  
  5. ' Set some values
  6. OneItem.Prop4(0).Prop1 = 1
  7. OneItem.Prop4(0).Prop2 = "Cust1"
  8. ' Or...
  9. OneItem.Prop4(1) = New CItem1(2, "Cust2")
I did read your code and tried to grab the idea what you're trying to do. This may not be exactly what you wanted, but I hope it gives some idea.

HTH
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC