Ist es möglich, beliebige Daten in eine Datei in C # zu retten?
-
06-07-2019 - |
Frage
Ich habe eine Klasse mit vielen Sammlungen in den Speicher geladen. Ist es möglich, einige, wie Speichern Sie diese Klasse mit allen seinen Daten in eine Datei zu können, einfach es später in dem Speicher laden? Gibt es eine Schnittstelle, die alle damit umgehen würde?
Lösung
Was Sie beschreiben, heißt Serialisierung . Sie searialize ein Objekt in einem gewissen Datenformat, das Sie auf der Festplatte gespeichert werden können, und dann können Sie später die Daten in ein Objekt deserialisieren. Es gibt viele Möglichkeiten, dies zu tun, aber der erste Schritt wird sein, die Klasse serialisierbar zu machen, indem Sie das Attribut Serializable fügt hinzu:
[Serializable]
public class YourClass
{
// the class goes here
}
Dann können Sie zum Beispiel verwenden die XmlSerializer
Klasse die Serialisierung / Deserialisierung zu behandeln.
Aktualisieren
Ich sollte erwähnen, dass Sie XmlSerializer
auch wenn Ihre Klasse verwenden kann, ist nicht mit dem Serializable
-Attribut versehen. Jedoch erfordern einige andere Serialisierungsmechanismen das Attribut.
Andere Tipps
BinaryFormatter die Instanz serialisiert
Und fügen Sie das Attribut [Serializable] vor der Klassendefinition
Sie können .NET Serialisierung Anlage verwenden, nur müssen Sie Ihre Klasse mit Attribut [Serializable] markieren und alle Mitglieder sollten auch serialisierbar sein
Beispielcode:
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class A
{
public static void Serialize(object obj,string filepath)
{
Formatter f = new BinaryFormatter();
f.Serialize(new FileStream(filepath,FileMode.Create),obj);
}
public static A Deserialize(string filepath)
{
Formatter f = new BinaryFormatter();
return f.Deserialize(new FileStream(filepath, FileMode.Open)) as A;
}
}