Autor Beitrag
schlumsch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

alles Win :)
Delphi 2005 Prof, Delphi 2007
BeitragVerfasst: Mo 26.04.10 11:00 
Hallo Gemeinde,

ich möchte gerne eine Liste in xml schreiben und habe dabei ein Problem. Dazu sei jnoch erwähnt das ich ziemlich neu in C# bin, man vergebe mir triviale Fehler. :)

Bislang habe ich eine Methode writeXml_Test welcher mir erfolgreich eine Liste von Objekten des Typs ExerciseStart in ein xml schreibt. So sieht das ganze aus:

Die Methode:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
        public static void writeXml_Test(List<ExerciseStart> dieListe)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Datenmodell.ExerciseStart>));
            FileStream fs = new FileStream("horst.xml", FileMode.Create);
            serializer.Serialize(fs, dieListe);
            fs.Close();
        }


Die zu Grunde liegende Klasse:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
    public class ExerciseStart
    {
        public int PositionImVerlauf;
        public Zeitstempel Zeitstempel;
        public String Übungsname;
        public int Übungsnummer;
        public String Übungstyp;
        public double Windrichtung;
        public int Windgeschwindigkeit;
        public int Wolkendichte;
        public int Wolkenhöhe;
        public int Nebel;
        public int Schnee;
        public int Hagel;
    public ExerciseStart()
    { }
    }


Nun möchte ich aktuell ein xml aus einer Liste von anderen Objekten schreiben, diesmal Objekte vom Typ LogEntry.
Hier bekomme ich nun an der Stelle wo ich den Serializer initiiere eine Exception

## There was an error reflecting type 'System.Collections.Generic.List`1[Datenmodell.LogEntry]'. ##

.... Sieht da jemand von euch das Problem?

Die neue Methode:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
        public static void writeXml_Test_2(List<LogEntry> dieLogEntries)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<Datenmodell.LogEntry>)); // Except!!!
            FileStream fs = new FileStream("horst2.xml", FileMode.Create);
            serializer.Serialize(fs, dieLogEntries);
            fs.Close();
        }


Die Klasse:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
    public class LogEntry
    {
        // pattern um die Log-Zeile zu erkennen --> ANPASSEN
        public const string Pattern = "Zeit1|Zeit2|Objektname1|Name:String|Breite:int";
        public DateTime Zeit1 { get; private set; }
        public DateTime Zeit2 { get; private set; }
        public string Name { get; private set; }
        public Dictionary<stringstring> Attribute { get; set; }

        public LogEntry()
        {
        }


Ich danke im Voraus, Gruß

_________________
icq 102779206
"God is real, unless declared integer..."
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 26.04.10 11:05 
In deiner LogEntry Klasse steckt ein Dictionary<> und die sind standardmäßig nicht serialisierbar.
schlumsch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

alles Win :)
Delphi 2005 Prof, Delphi 2007
BeitragVerfasst: Mo 26.04.10 11:33 
Jap, ich danke dir.
Falls jemand das gleiche Problem hat, hier die Lösung:

weblogs.asp.net/pwel...06/05/03/444961.aspx

thx!

_________________
icq 102779206
"God is real, unless declared integer..."