Mahlzeit zusammen,
ich benötige eure Hilfe. Los geht's!
Um die Werte einer Klasse in eine CSV-Datei zu schreiben, arbeite ich mit PropertyInfo. Den Code habe ich irgendwo gefunden. Zugegebener maßen verstehe ich ihn nicht so ganz. Grundlegend funktioniert dieser aber, Zunächst der Code:
Private Sub SaveFiltertemplates()
Try
Using _sw As New IO.StreamWriter("Filtertemplates.txt", False, System.Text.Encoding.Default)
For Each Template As clsFiltertemplates In TemplatesStack
Dim _sSpeicherstring As String = ""
Dim Type As Type = Template.GetType()
Dim properties() As PropertyInfo = Type.GetProperties()
For Each obj As PropertyInfo In properties
If _sSpeicherstring = "" Then
_sSpeicherstring = obj.GetValue(Template, Nothing).ToString
Else
If TypeOf (obj.GetValue(Template, Nothing)) Is Array Then
_sSpeicherstring += ";" & String.Join("#+", obj.GetValue(Template, Nothing).ToString)
Else
_sSpeicherstring += ";" & obj.GetValue(Template, Nothing).ToString
End If
End If
Next
_sw.WriteLine(_sSpeicherstring)
Next
End Using
Catch
MsgBox("Die Templates konnten nicht abgespeichert werden. Überrüfen Sie, ob 'Filtertemplates.txt' anderweitig geöffnet ist.", Nothing, "Fehler beim Abspeichern...")
End Try
End Sub
Jetzt musste ich in die Klasse eine Property vom Typ String in den Typ String() (also ein Array) abändern.
obj.GetValue(Template, Nothing).ToString
funktioniert damit nicht mehr. Also checke ich, ob die Property ein Array ist und gehe damit anders vor, in dem ich das Array mit dem Delimiter #+ in den Semikolongetrennten String mit einbaue. Versuchen tu ich es hier:
If TypeOf (obj.GetValue(Template, Nothing)) Is Array Then
_sSpeicherstring += ";" & String.Join("#+", obj.GetValue(Template, Nothing))
Else
_sSpeicherstring += ";" & obj.GetValue(Template, Nothing).ToString
End If
Allerdings bekomme ich die einzelnen Werte dieses Arrays nicht ausgelesen. Auch längere Suche im Netz hat mir nicht weiter geholfen. Wie lässt sich mein Vorhaben bewerkstelligen?
Vielen Dank euch!
Grüße
Manu