Autor Beitrag
Dirk Bock
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 22.10.08 10:35 
Hallo und vorab den Anfänger-Alarm! :oops: Meine Programmiererfahrung liegt nicht nur lange zurück, sondern beschränkt sich zudem auf PASCAL und FORTRAN...

Ich habe eine Klasse ItemList auf Basis von LIST<T> geschrieben, in der ich Listen von Objekten verwalten will, Jede Instanz der Klasse organisiert Daten einer bestimmten Klasse aus einer umfangreichen Hierarchie.

Die Daten sollen im XML-Format gespeichert werden. Das Schreiben der Daten funktioniert auch problemlos über eine Methode WriteToFile. Ähnliches will ich auch für das Lesen der Daten haben: eine Methode ReadFromFile der Klasse ItemList.

Meine Frage ist nun: Wie schreibe ich die Methode so, dass beim Aufruf myItemList.ReadFromFile(FileName) der Dateiinhalt von FileName in die Instanz myItemList deserialisiert wird?

Hilflos...

---Dirk Bock
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 22.10.08 11:51 
Lies dir mal das Kapitel 11 bzw. 11.4 von openbook.galileocomp...ng.de/visual_csharp/ durch.
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: Mi 22.10.08 13:01 
Zitat:
Meine Frage ist nun: Wie schreibe ich die Methode so, dass beim Aufruf myItemList.ReadFromFile(FileName) der Dateiinhalt von FileName in die Instanz myItemList deserialisiert wird?


Das Deserialisieren so wie es im Framework implementiert ist (also so wie es zum Beispiel im erwähnten OpenBook beschrieben ist) erzeugt dir AFAIK immer eine neue Instanz der serialisierten Klasse. Gibt es einen zwingenden Grund das es in die bereits vorhandene Instanz rein deserialisiert werden muß?
Wenn ja bleibt dir wohl nur die Möglichkeit das in deiner Methode so zu lösen das erst in eine neue Instanz deserialisiert wird und du dann manuell die Daten in die vorhanden Instanz kopierst.
Dirk Bock Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 22.10.08 16:24 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Das Deserialisieren so wie es im Framework implementiert ist (also so wie es zum Beispiel im erwähnten OpenBook beschrieben ist) erzeugt dir AFAIK immer eine neue Instanz der serialisierten Klasse. Gibt es einen zwingenden Grund das es in die bereits vorhandene Instanz rein deserialisiert werden muß?


Nein, muss es nicht; ich habe mich eines Besseren belehren lassen (Danke!) und ReadFromFile als statische Methode implementiert, die das Objekt ItemList<DataItem> zurückliefert.

Leider funktioniert es nicht ganz so wie ich mir das wünsche: beim Deserialisieren wird ItemList<DataItem> zwar korrekt generiert - die Anzahl der Listenelemente stimmt - doch leider werden alle Felder der DataItems zu null.

Wenn ich meine ItemList mit <string> statt mit <DataUtem> fülle, geht alles gut.

Da werde ich noch ein wenig forschen und lernen müssen.

Vielen Dank!

---Dirk Bock