Entwickler-Ecke

IO, XML und Registry - Problem bei XML Serialisierung


mdacko - So 25.10.09 17:22
Titel: Problem bei XML Serialisierung
Hallo,

ich versuche gerade eine Arrayliste zu serialisieren. Nur verwende ich keine normale Arraylist, sondern eine "ListWithChangedEvent" (http://msdn.microsoft.com/de-de/library/aa288460(VS.71).aspx)

So sieht meine Serialisierungsfunktion aus:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
        public static bool Save(ListWithChangedEvent Anrufsliste)
        {
            

            try
            {
                xmlSer = new XmlSerializer(typeof(ListWithChangedEvent));

                if (File.Exists(ordner + "Anrufe.xml"))
                    File.Delete(ordner + "Anrufe.xml");

                FileStream serializeStream = new FileStream(ordner + "Anrufe.xml", FileMode.Create);
                xmlSer.Serialize(serializeStream, Anrufsliste);
                serializeStream.Close();

                return true;
            }
            catch
            {
                return false;
            } 
        }


Folgende Zeile davon wirft einen Fehler:

C#-Quelltext
1:
xmlSer = new XmlSerializer(typeof(ListWithChangedEvent));                    


Debugger hat folgendes geschrieben:
Implementieren Sie einen Standardaccessor in '.ListWithChangedEvent', da er von ICollection erbt.


Habe keine Ahnung was ich dagegen machen kann, auch bei Google findet man nur wenig. Hoffe Ihr könnt mir helfen :)


Kha - So 25.10.09 18:26

Ich weiß nicht, was er daran auszusetzen hat, aber die MSDN-Klasse ist unvollständig und ab C# 2.0 gibt es sowieso keinen Grund mehr ArrayLists zu benutzen. Leite stattdessen von Collection<T> ab und überschreibe ClearItems, InsertItem, SetItem und RemoveItem.


mdacko - So 25.10.09 19:00

Danke für deinen Beitrag.

Der Vollständigkeit wegen hier eine evtl. Lösung, auch wenn es wohl unüblich ist in .Net 3.5:
Ich habe gerade gelesen, dass sich per XML keine ArrayLists serialisieren lassen sollen. Eine Konvertierung zu einem Array schafft Abhilfe.