Moin Leute,
kleines aber nerviges Problem.
Ich speichere Eigenschaften meiner Klassen in einer Config.cfg.
Sieht ca so aus
Jetzt will ich das ganze einlesen. Solange die Eigenschaft ein String ist, kein ding.
Jetzt steht aber z.B. ein Boolean und ein Integer Wert dabei, manchmal auch ein Checkstate.
In der Config Datei siehts so aus:
Wenn ich da jetzt eine Zeile einese, z.B. diese
Wie konvertiere ich das value aus der Datei, wenn ich vorher nicht weiß, in was ich konvertieren muss?
Hilft mir mal jemand ?
BTW Falls jemand das überschreiben der Config Datei verbessern kann, gerne auch dabei.
kleines aber nerviges Problem.
Ich speichere Eigenschaften meiner Klassen in einer Config.cfg.
Sieht ca so aus
VB.NET-Quellcode
- Dim t = config.GetType
- Dim fieldName As String
- Dim propertyValue As Object = Nothing
- Dim propertyType As Type
- Dim arrLines As New List(Of String)
- For Each pi As PropertyInfo In t.GetProperties(BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic)
- fieldName = pi.Name
- propertyType = pi.PropertyType
- propertyValue = pi.GetValue(config)
- Dim lin As String = fieldName.ToString & Chr(9) & propertyValue.ToString & Chr(9) & propertyType.ToString
- arrLines.Add(lin)
- Next
- If File.Exists(fmMain.f_Config) Then
- File.Delete(fmMain.f_Config)
- End If
- Dim fi = File.Create(fmMain.f_Config)
- fi.Close()
- fi.Dispose()
- Dim sw As StreamWriter = New StreamWriter(fmMain.f_Config)
- For Each l In arrLines
- sw.WriteLine(l)
- Next
- sw.Close()
- sw.Dispose()
Jetzt will ich das ganze einlesen. Solange die Eigenschaft ein String ist, kein ding.
Jetzt steht aber z.B. ein Boolean und ein Integer Wert dabei, manchmal auch ein Checkstate.
In der Config Datei siehts so aus:
username System.String
userpw test System.String
mainlink 1 System.String
sublink_1 1 System.String
sublink_2 4 System.String
sublink_3 6 System.String
blnAuto True System.Boolean
monday False System.Boolean
tuesday False System.Boolean
wednesday False System.Boolean
thursday False System.Boolean
friday False System.Boolean
saturday False System.Boolean
sunday False System.Boolean
repeat 0 System.Int32
Wenn ich da jetzt eine Zeile einese, z.B. diese
sunday False System.Boolean
, wie zur Hölle kriege ich es hin, die Eigenschaft beim Einlesen wieder zu setzen:VB.NET-Quellcode
- For Each l_cfg In arrLines
- For Each pi As PropertyInfo In t.GetProperties(BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic)
- fieldName = pi.Name
- propertyType = pi.PropertyType
- If l_cfg.Split(Chr(9))(0) = fieldName Then
- pi.SetValue(config, l_cfg.Split(Chr(9))(1), Nothing)
- Exit For
- End If
- Next
Wie konvertiere ich das value aus der Datei, wenn ich vorher nicht weiß, in was ich konvertieren muss?
Dim Value = convert.to(System.Boolean.gettype, value aus textdatei)
Hilft mir mal jemand ?
BTW Falls jemand das überschreiben der Config Datei verbessern kann, gerne auch dabei.
~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~