0 Pluspunkte 0 Minuspunkte

Ich habe mehrere Klassen die ich alle [Serializable] gemacht habe.

class Port {}

class Node {
    List<Port> ports;
}

class CustomNode : Node {}
class OtherCustomNode : Node {}

Wenn ich jetzt eine Liste dieser Nodes habe

List<Node> nodes

Wie kann ich die ganze Liste serialisieren und speichern?

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Mit dem XMLSerializer kannst du eine Liste verschiedener Objekte in C# serialisieren.

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

[Serializable]
class Port
{
    // Hier die Port-Klasse implementieren
}

[Serializable]
class Node
{
    public List<Port> Ports { get; set; }

    public Node()
    {
        Ports = new List<Port>();
    }
}

[Serializable]
class CustomNode : Node
{
    // Hier die CustomNode-Klasse implementieren
}

[Serializable]
class OtherCustomNode : Node
{
    // Hier die OtherCustomNode-Klasse implementieren
}

class Program
{
    static void Main()
    {
        // Beispiel: Eine Liste von Nodes erstellen
        List<Node> nodes = new List<Node>
        {
            new CustomNode(),
            new OtherCustomNode()
            // Weitere Nodes hinzufügen, falls erforderlich
        };

        // Pfad zur Datei, in der die serialisierten Daten gespeichert werden sollen
        string filePath = "serializedNodes.xml";

        // Serializer erstellen
        XmlSerializer serializer = new XmlSerializer(typeof(List<Node>));

        // FileStream erstellen, um die Daten in die Datei zu schreiben
        using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
        {
            // Liste serialisieren und in die Datei schreiben
            serializer.Serialize(fileStream, nodes);
        }

        Console.WriteLine("Serialisierung abgeschlossen. Daten wurden in {0} gespeichert.", filePath);
    }
}
von (396 Punkte)  
0 Pluspunkte 0 Minuspunkte

Du kannst die Liste mit dem BinaryFormatter automatisch serialisieren wenn du alle entsprechenden Klassen Serializable markiert hat..

// Beispiel: Eine Liste von Nodes erstellen
List<Node> nodes = new List<Node>
{
    new CustomNode(),
    new OtherCustomNode()
    // Weitere Nodes hinzufügen, falls erforderlich
};

// Pfad zur Datei, in der die serialisierten Daten gespeichert werden sollen
string filePath = "Nodes.dat";

// Formatter erstellen
IFormatter formatter = new BinaryFormatter();

// FileStream erstellen, um die Daten in die Datei zu schreiben
using (Stream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
{
    // Liste serialisieren und in die Datei schreiben
    formatter.Serialize(stream, nodes);
}

Console.WriteLine("Serialisierung abgeschlossen. Daten wurden in {0} gespeichert.", filePath);

von (706 Punkte)