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?

War es hilfreich?

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;
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top