Autor Beitrag
ebber
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Di 27.01.09 16:06 
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:
ausblenden 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 27.01.09 17:53 
user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Di 27.01.09 18: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 27.01.09 18:35 
user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:
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.
user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:
Die Frage ist jetzt nur, wie sage ich, dass ich die TimeSpan nicht serialisieren will?
XmlIgnoreAttribute :)

_________________
>λ=
ebber Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 239
Erhaltene Danke: 1

Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
BeitragVerfasst: Di 27.01.09 18:54 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconebber hat folgendes geschrieben Zum zitierten Posting springen:
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