Ich habe mehrere Sammlungen von Klassen / Strukturen in meiner App.
Die Klasse ist nur eine Klasse mit Feldern
%Vor%Und meine Sammlung
%Vor%Ich muss _myList speichern und laden können. Ich möchte nur alle Klassenfelder in Datei speichern und laden. Ich möchte keine Zeit damit verbringen, meine eigenen Daten zu schreiben. Gibt es irgendwelche Werkzeuge in .NET, die mir helfen? Das Dateiformat interessiert mich nicht.
XMLSerializer ist nicht schwer zu verwenden. Solange deine Objekte nicht riesig sind, ist es ziemlich schnell. Ich serialisiere einige riesige Objekte in einigen meiner Apps. Es dauert ewig und die resultierenden Dateien sind fast 100 MB, aber sie sind editierbar, wenn ich ein paar Sachen optimieren muss. Außerdem ist es egal, ob ich Felder zu meinen Objekten hinzufüge. Die serialisierten Dateien der älteren Version des Objekts werden immer noch richtig deserialisiert. Ich mache die Serialisierung in einem separaten Thread, so ist es egal, wie lange es in meinem Fall dauert. Der Vorbehalt ist, dass Ihre A
-Klasse einen Konstruktor für XMLSerialziation haben muss, um zu funktionieren.
Hier ist ein Arbeitscode, den ich zum Serialisieren / Deserialisieren verwende, wobei die Fehlerbehandlung zur besseren Lesbarkeit herausgerissen wurde ...
%Vor%Ich habe gerade a geschrieben Blogbeitrag zum Speichern der Daten eines Objekts in Binary, XML oder Json ; Nun schreiben Sie ein Objekt oder eine Liste von Objekten in eine Datei. Hier sind die Funktionen, um es in den verschiedenen Formaten zu tun. Siehe meinen Blogbeitrag für weitere Details.
Erfordert, dass die System.Xml-Assembly in Ihr Projekt eingefügt wird.
%Vor%Sie müssen einen Verweis auf die Newtonsoft.Json-Assembly einschließen, die Sie im Json.NET NuGet-Paket .
%Vor%Es gibt viele Serialisierer:
Teil des .net-Frameworks
Drittanbieter:
Ich würde wahrscheinlich einen ProtoBuf-Serializer verwenden, wenn die Datei binär sein könnte, und einen JSON-Serialisierer, wenn es ein einfacher Text sein muss.
Sie können Ihre List<>
mit XML Serializer oder Binary Serializer serialisieren und die serialisierte Liste in einer Datei speichern.
Später können Sie diesen Dateiinhalt lesen und Ihre ursprüngliche Liste abrufen.
Machen Sie Ihren Typ, für den Sie die Liste [Serializable]
Ich benutze normalerweise den XML-Serilizer, bin schnell, einfach zu implementieren und halte die Objekte in einer gut lesbaren Weise, man sieht ein schönes Beispiel .
Sie können eine binäre Serialisierung verwenden, wenn Sie eine effektivere Lösung mit größerer Größe wünschen. (Zum Beispiel, wenn Sie die Serialisierung über ein Netzwerk übertragen möchten.)
BEARBEITEN: Um mehr Kontrolle über die Elemente zu erhalten, die Sie serialisieren, werfen Sie einen Blick auf diese Beispiel
Altes Thema, aber ich habe die obige Antwort von Tim Coker geändert, um die verwendeten Blöcke zu verwenden, um die Stream-Objekte ordnungsgemäß zu entfernen und nur eine einzelne Klasseninstanz zu speichern:
%Vor%Tags und Links .net c# serialization file