C# SerializationInfo für Arrays

...komplette Frage anzeigen

1 Antwort

Ich nehme an, dass du noch relativ neu in der (objektorientierten) Programmierung bist.

Diese Vorgehensweise mit den Arrays ist extrem fehlerbehaftet. Was passiert z.B. wenn du in einem Array einen Wert vergisst oder wenn ein Array länger als die anderen ist?

Du solltest also dein Programm umstellen:

public class Keks
{
public string Sorte { get; set; }
public uint Brennwert { get; set; }
public uint Kalorien { get; set; }
public uint Kohlenhydrate { get; set; }
}

public class Kekse
{
public KeksSammlung { get; private set; }

public Kekse()
{
var kekse = new List();
kekse.Add(new Keks() { Sorte = "Schoko", Brennwert = 2186, Kalorien = 552, Kohlenhydrate = 58 });
//mehr Kekse!
KeksSammlung = kekse;
}
}

Damit wären die Fehlerquellen, die durch die Arrays entstehen können, beseitigt. Weiter gehts zu Serialisierung.

Die Serialisierung wird in C# durch Attribute gelöst. Du sagst über das Attribut aus, dass eine Klasse serialisierbar sein soll. Das sind nur ein paar Zeilen Code.

[Serialiable]
public class Keks
{
  public string Sorte { get; set; }
  public uint Brennwert { get; set; }
  public uint Kalorien { get; set; }
  public uint Kohlenhydrate { get; set; }
}

public class Kekse
{
public KeksSammlung { get; private set; }

  public Kekse()
  {
  var kekse = new List<Keks>();
  kekse.Add(new Keks() { Sorte = "Schoko", Brennwert = 2186, Kalorien = 552, Kohlenhydrate = 58 });
  //mehr Kekse!
KeksSammlung = kekse;
  }

public void Serialize(string pfad)
{
var serializer = new XmlSerializer(typeof(List<Keks>));
using (var writer = new StreamWriter(pfad))
{
serializer.Serialize(writer, kekse);
}
}
}

Ich habe hier die die Daten in eine Xml-Datei serialisiert. Es wäre natürlich auch möglich, es nur binär serialisieren zu lassen. Dann muss einfach nur die Klasse XmlSerializer ausgetauscht werden.

Ach ja, und nun noch die Anwendung:

public static void Main(string[] args)
{
var cookies = new Kekse();
cookies.Serialize(@"C:\pfad\zur\datei.xml");
}

Was möchtest Du wissen?