lima-city: Webhosting, Domains und Cloud
1 Pluspunkt 0 Minuspunkte

Wie kann ich eine C# Klasse serialisieren um sie in einer Datei zu speichern und wieder zu laden?

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class MeinObjekt
{
    public int ID { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        
        MeinObjekt obj = new MeinObjekt
        {
            ID = 1,
            Name = "Beispiel"
        };

        // Serialisierung
        Stream stream = new FileStream("objekt.bin", FileMode.Create, FileAccess.Write);

        // Deserialisierung
        stream = new FileStream("objekt.bin", FileMode.Open, FileAccess.Read);
        
        MeinObjekt newObj = (MeinSerializableObjekt)formatter.Deserialize(stream);
        
        Console.WriteLine($"ID: {newObj.ID}, Name: {newObj.Name}");
        
    }
    
}
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Dir fehlt der Code der das Objekt in die Datei schreibt. Du erstellst lediglich eine leere Datei. Hier ist eine Instanz des BinaryFormatter eingefügt der die Serialisierung durchführt.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class MeinObjekt
{
    public int ID { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        MeinObjekt obj = new MeinObjekt
        {
            ID = 1,
            Name = "Beispiel"
        };

        // Serialisierung
        IFormatter formatter = new BinaryFormatter();
        Stream stream = new FileStream("objekt.bin", FileMode.Create, FileAccess.Write);
        formatter.Serialize(stream, obj);
        stream.Close();

        // Deserialisierung
        stream = new FileStream("objekt.bin", FileMode.Open, FileAccess.Read);
        MeinObjekt newObj = (MeinObjekt)formatter.Deserialize(stream);
        stream.Close();

        Console.WriteLine($"ID: {newObj.ID}, Name: {newObj.Name}");
    }
}
von (703 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.