![]() |
List<T> serialisieren
Hallo,
ich arbeite zwar mit VC#, aber ich denke nicht, dass das ein Problem ist ;) Kann ich komplette Komponenten einfach serialisieren, sprich ihre Speicherbelegung bzw. ihre Properties in eine Datei speichern und wieder laden? Mir würde es hier im speziellen um eine generische Liste gehen, die ich natürlich inklusive der gehaltenen Instanzen speichern möchte... da .Net ja mehr oder weniger per VM läuft, muss das doch gehen, oder? Im Notfall muss ichs halt selber machen... |
Re: List<T> serialisieren
Speichern:
Code:
Laden:
BinaryFormatter bf=new BinaryFormatter();
using (Stream st=....) { bf.Serialize(st,obj); }
Code:
BinaryFormatter bf=new BinaryFormatter();
using (Stream st=....) { obj= bf.Deserialize(st,obj); } |
Re: List<T> serialisieren
Wenn einer Klasse das Serializable-Attribut zugeordnet ist (wie es bei List<T> der Fall ist) und keine speziellen Bemerkungen im SDK stehen, kannst du davon ausgehen, dass der gesamte Inhalt serialisiert wird. Wenn du auf Nummer sicher gehen willst, kannst du immer noch unter dem Reflector in der Klasse nach ISerializable und NonSerializedAttribute suchen :wink: .
Zitat:
|
Re: List<T> serialisieren
Danke für den weitere Info.
Ja, Delphi kann auch serialisieren... |
Re: List<T> serialisieren
Zitat:
|
Re: List<T> serialisieren
Zitat:
|
Re: List<T> serialisieren
Ich habe mich mit diesem Thema noch nciht eingehend beschäftigt, welche Anwendungsfälle gibt es um serialisierung zu nutzen? Mir fällt nicht ein wofr man das nutzt. Wäre dankbar für ein paar Anwendungsbeispiele.
Danke dragi |
Re: List<T> serialisieren
Naja, Serialisierung ist eigentlich absolut egal genial: Du nimmt eine komplette Instanz einer Klasse, frierst sie ein, holst dir den bytecode, und wann immer du lust auf TK-Ware hast, holst du sie dir wieder ;)
Kein Rumgemurkse mit Ini-Dateien, einfach einen Listentyp implementieren oder ein Dictionary (für die klassische Key-Value-Zuordnung) und speichern und laden, wie du lustig bist ;) EDIT: :shock: was hab ich denn da verbrochen?! |
Re: List<T> serialisieren
moin dragi,
um das ganze mit ein bisschen code zu zeigen machen wir mal folgendes wir haben 3 Auto's, die wir in einer liste haben wollen. Die Klasse Auto sieht wie folgt aus
Code:
Nun generieren wir eine Form schmeissen da eine Combobox, eine TextBox und einen Button drauf.public Auto() { } public Auto(int Index, string Marke, string Kennzeichen) { this.Index = Index; this.Marke = Marke; this.Kennzeichen = Kennzeichen; } im click des Buttons schreiben wir jetzt:
Code:
alles meine Auto's :mrgreen:
List<Auto> autos = new List<Auto>();
autos.Add(new Auto(1, "Ford", "ASL - PD 89")); autos.Add(new Auto(2, "Mazda", "ASL - BA 169")); autos.Add(new Auto(3, "Audi", "ASL - KH 66")); XmlSerializer mySer = new System.Xml.Serialization.XmlSerializer(typeof(List<Auto>)); FileStream fs = new FileStream("Auto.xml", FileMode.Create, FileAccess.Write); mySer.Serialize(fs, autos); fs.Close(); Danach haben wir eine Datei die so:
XML-Code:
aussieht.
<?xml version="1.0"?>
<ArrayOfAuto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Auto> <Marke>Ford</Marke> <Kennzeichen>ASL - PD 89</Kennzeichen> <Index>1</Index> </Auto> <Auto> <Marke>Mazda</Marke> <Kennzeichen>ASL - BA 169</Kennzeichen> <Index>2</Index> </Auto> <Auto> <Marke>Audi</Marke> <Kennzeichen>ASL - KH 66</Kennzeichen> <Index>3</Index> </Auto> </ArrayOfAuto> wenn du jetz noch folgendes in den Click des Button einfügst hast du das geniale des Databinding vor Augen
Code:
wie kann mann den C# Code formatieren :gruebel:
comboBox1.DataSource = autos;
tBox_Kennzeichen.DataBindings.Add("Text", autos, "Kennzeichen"); raik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz