Hallo,
ich habe mehrere Dateien, die binär gespeichert werden sollen. Es handelt sich um Klassen mit gemischten Datentypen, die zur Laufzeit im Typ List<> als Klassenarray abgelegt sind. Beim Auslesen (deserialize) ist es klar, daß man dem formatter den Datentyp angeben muß.
Beim Abspeichern (serialize) benötige ich bislang für jede Datenstruktur eine eigene Methode, die den Datentyp als Parameter erhält.
Meine Frage wäre: Kann man beim Abspeichern die Methode so allgemein halten, daß man für jede Art von Daten nur eine einzige Methode benötigt?
Die Methode für die Datei Kontenrahmen sieht derzeit so aus:
public bool speichere_kontenrahmen_binaer(string dateiname, List<C01Konten.konto> kontenliste)
{
try
{
FileStream stream = new FileStream(dateiname, FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, kontenliste);
stream.Close();
return true;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
}
Gewünscht wäre eine Methode, die ungefähr so aussehen soll:
public bool speichere_binaerdatei(string dateiname, List<object> allgemeine_datenliste_ohne_typenangabe)
...
Geht das?
Hallo DerKlaus,
was ist den nun deine konkrete Frage? Gehen.. natürlich.
Was hast Du probiert, woran hängts?
Und die Frage: inwiefern das sinnvoll sein soll.
Einstellungen speichert man i.d.R. besser nicht binär...
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ach, für List<string> gibt es doch so schöne Möglichkeiten:
public bool speichere_textdatei(string dateiname, List<string>stringlist)
{
try
{
File.WriteAllLines(dateiname, stringlist);
return true;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
}
Ok, string ist typisiert. Aber so ähnlich würde ich gern mit einer einzigen Methode alle Datentypen mit untypisierten Parametern binär speichern.
War nur die Frage, ob das ohne Aufwand geht (bitte nicht zuvor List<T> in byte[] umwandeln müssen oder vielleicht ist blockweises Schreiben der typisierten List<T> ja auch schneller als byteweises Schreiben), bzw. ob das sinnvoll oder empfehlenswert ist.
Sozusagen, es gibt im .NET tausende Klassen, vielleicht hat ja eine das verfügbar.
Hallo DERKLAUS,
ich hoffe, dir ist schon klar, daß es etwas völlig anderes ist, einen String in eine Textdatei zu schreiben, als ein Objekt zu serialisieren. Wir helfen dir gerne wenn du ein Problem hast, aber bitte beantworte den Helfern die Fragen, die sie dir gestellt haben.
Bitte beachte [Hinweis] Wie poste ich richtig?, insbesondere die Punkte 5, 8 und 9.
Christian
Weeks of programming can save you hours of planning
Schau dir mal das an.
C# - generische De-/ Serialisierung von Objekten in XML und Binär
Sollte man mal gelesen haben: