Hallo zusammen, meine erste Frage ans Forum:
Ich habe eine Klasse mit vielen Eigenschaften. Es macht den Code gut verständlich, dass man jede Eigenschaft über ihren Namen ansprechen kann. Aber es ist sehr unpraktisch, wenn ich alle Eigenschaften in verschiedene Dateiformate rausschreiben oder einlesen will. Ich muss jedes Mal jede einzelne Eigenschaft hinschreiben. Wenn ich später Eigenschaften ändere oder weitere hinzufüge, muss ich das in allen betroffenen Prozeduren auch ändern.
Ich würde gerne in der Klasse ein Array erstellen, dass die Namen und Verweise auf alle Eigenschaften enthält (quasi ByRef). Dann kann ich später mit einer simplen For-Schleife durch das Array laufen und alle Werte auslesen oder schreiben. Ich weiß nur nicht, ob und wie man die Variablen als Objekte und nicht ihre Werte in ein Array stecken kann. So dass man später auch über das Array den Wert der Variablen lesen/schreiben kann.
Bisher habe ich nur mit Arrays gearbeitet, um Daten zu verwalten. Allerdings dieses Mal brauche ich ein Objektmodell aus verschiedenen Klassen, die Verweise aufeinander haben. Mein Lösungsansatz ist ein Mischmasch aus beidem. Ich bin sehr gespannt, wie ein Profi das handhabt.
Vielen Dank für eure Hilfe
Als Code könnte es ungefähr so aussehen:
Ich habe eine Klasse mit vielen Eigenschaften. Es macht den Code gut verständlich, dass man jede Eigenschaft über ihren Namen ansprechen kann. Aber es ist sehr unpraktisch, wenn ich alle Eigenschaften in verschiedene Dateiformate rausschreiben oder einlesen will. Ich muss jedes Mal jede einzelne Eigenschaft hinschreiben. Wenn ich später Eigenschaften ändere oder weitere hinzufüge, muss ich das in allen betroffenen Prozeduren auch ändern.
Ich würde gerne in der Klasse ein Array erstellen, dass die Namen und Verweise auf alle Eigenschaften enthält (quasi ByRef). Dann kann ich später mit einer simplen For-Schleife durch das Array laufen und alle Werte auslesen oder schreiben. Ich weiß nur nicht, ob und wie man die Variablen als Objekte und nicht ihre Werte in ein Array stecken kann. So dass man später auch über das Array den Wert der Variablen lesen/schreiben kann.
Bisher habe ich nur mit Arrays gearbeitet, um Daten zu verwalten. Allerdings dieses Mal brauche ich ein Objektmodell aus verschiedenen Klassen, die Verweise aufeinander haben. Mein Lösungsansatz ist ein Mischmasch aus beidem. Ich bin sehr gespannt, wie ein Profi das handhabt.
Vielen Dank für eure Hilfe
Als Code könnte es ungefähr so aussehen:
VB.NET-Quellcode
- Public Class Person
- Public ID As String = "P000000"
- Public CreationDate As Date = CDate("01.01.1900")
- Public FirstName As String = ""
- Public MiddleName As String = ""
- Public FamilyName As String = ""
- Public MaidenName As String = ""
- Public NameAffix As String = ""
- Public DateOfBirth As Date = CDate("01.01.1900")
- Public PlaceOfBirth As String = ""
- Public PhoneNumber As String = ""
- Public CellPhoneNumber As String = ""
- 'und einiges mehr
- Public P(,) As Object 'Array to provide all properties names, objects and formats
- Public Sub New()
- 'Fill the array with properties:
- ReDim P(2, 14)
- P(0, 0) = "ID"
- P(1, 0) = New Object() {ID} 'Kann man hier einen Verweis auf die Variable "ID" ins Array bekommen?
- P(2, 0) = "String"
- P(0, 1) = "CreationDate"
- P(1, 1) = New Object() {CreationDate}
- P(2, 1) = "String"
- 'usw.
- End Sub
- End Class
- Public Sub WriteToXML() 'Ich weiß, da gibts für XML spezielle Befehle. Ist nur ein Beispiel.
- '...
- For n As Integer = 0 To P.GetUpperBound(0)
- sw.WriteLine("<" & P(0, n) & ">" & P(1, n) & "</" & P(0, n) & ">" & vbCrLf) 'Kann man hier den Wert der verwiesenen Variable auslesen?
- Next
- '...
- End Sub
- Public Sub ReadFromExcel()
- '...
- For n As Integer = 0 To LastRow - 1
- For m As Integer = 0 To P.GetUpperBound(0)
- If WB.Cells(n + 1, 1).Value = P(0, m) Then
- P(1, m) = WB.Cells(n + 1, 2).Value 'Hier sollte idealerweise der gelesene Wert in der Variablen landen, auf die das Array-Feld verweist
- Exit For
- End If
- Next
- Next
- '...
- End Sub