Entwickler-Ecke
Sonstiges (.NET) - XML-Serialization mit TimeSpan
ebber - Di 27.01.09 15:06
Titel: XML-Serialization mit TimeSpan
Hallo,
ich wollte meine Klasse in XML abspeichern. Ein Problem das ich festgestellt hatte war, dass das ganze keinen TimeSpan unterstützt. Ich habe dann auch im Internet gelesen, dass das mit TimeSpan nicht funktioniert.
Das einzige was man speichern könnte wäre die TimeSpan.Duration und diese dann auch entsprechend wieder einlesen; Wäre eigentlich kein Problem.
Das Problem ist aber, dass ich eine List<meinerKlasse> an eine Tabelle geDataBindet habe. Also kann ich an der Klasse nicht wirklich was ändern.
Noch ein bisschen Code:
Das Speichern:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private bool SaveSer(List<Film> ls) { XmlSerializer serializer = new XmlSerializer(typeof(List<Film>));
StreamWriter writer = new StreamWriter("File.xml");
serializer.Serialize(writer, ls); writer.Close();
return true; } |
Ausschnitt aus der Klasse:
C#-Quelltext
1: 2: 3: 4: 5:
| public class Film { public string Titlee { get; set; } public TimeSpan Length { get; set; } } |
Kann ich irgendwie beim Speichern die TimeSpan in eine TimeSpan.Duration umwandeln oder hätte irgend jemand eine andere Idee?
MfG
Kha - Di 27.01.09 16:53
Titel: Re: XML-Serialization mit TimeSpan
ebber hat folgendes geschrieben : |
| Das Problem ist aber, dass ich eine List<meinerKlasse> an eine Tabelle geDataBindet habe. |
Ein DataGridView? Dann musst du eben auf AutoGenerateColumns verzichten (sowieso nur ein nettes RAD-Feature), dann kannst du deine neue "LengthInSecs"-Property ausblenden.
PS: Wenn XML kein Muss ist: mit einem BinarySerializer hat man weniger Scherereien ;) .
ebber - Di 27.01.09 17:16
Es ist das Xceed DataGrid, aber da kann man das sicher auch ausblenden. (Bzw. habe gerade nachgeschaut, geht)
Angenommen ich mache das, kann ich bei set und get der "LengthInSecs" automatisch die TimeSpan setzen?
Die Frage ist jetzt nur, wie sage ich, dass ich die TimeSpan nicht serialisieren will?
Kha - Di 27.01.09 17:35
ebber hat folgendes geschrieben : |
| Angenommen ich mache das, kann ich bei set und get der "LengthInSecs" automatisch die TimeSpan setzen? |
Bin mir nicht sicher, was du meinst, aber im Getter eben TimeSpan.Seconds und im Setter TimeSpan.FromSeconds.
ebber hat folgendes geschrieben : |
| Die Frage ist jetzt nur, wie sage ich, dass ich die TimeSpan nicht serialisieren will? |
XmlIgnoreAttribute :)
ebber - Di 27.01.09 17:54
Kha hat folgendes geschrieben : |
ebber hat folgendes geschrieben : | | Angenommen ich mache das, kann ich bei set und get der "LengthInSecs" automatisch die TimeSpan setzen? | Bin mir nicht sicher, was du meinst, aber im Getter eben TimeSpan.Seconds und im Setter TimeSpan.FromSeconds. |
Ja genau das hatte ich gemeint, war zugegebenerweise ein wenig zu kompakt formuliert.
Das andere scheint nun alles zu funktionieren.
Einfach [XmlIgnore] über die Property.
MfG
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!