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