Wie Daten speichern?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Wie Daten speichern?

    Hey,

    Ich suche den besten bzw. einfachsten funktionalen Weg, Daten meiner eigenen Klasse zu speichern.

    Hauptsächlich brauche Ich das, um Klassen vom Typ Formel zu speichern, die wiederum folgendes beinhaltet:

    C#-Quellcode

    1. public class Formel {
    2. public string Formula { get; set; }
    3. public string Name { get; set; }
    4. public readonly List<Variable> variablen;
    5. public string Beschreibung { get; set; }
    6. }


    Die Klasse Variable sieht folgendermaßen aus:

    C#-Quellcode

    1. public class Variable {
    2. public double Wert { get; set; }
    3. public string Bezeichner { get; set; }
    4. public string Beschreibung { get; set; }
    5. }


    Ich habe schon einen Blick auf XML geworfen, frage mich aber, ob es noch irgendwas anderes in die Richtung gibt.
    Wichtig ist, dass eine ​Formel theoretisch eine riesig große ​List<Variable> haben kann.
    Ich brauche also irgendwas "dynamisches" (sagt man das so?)

    Danke schonmal im Voraus
    Felix
    Grüße
    Felix
    Die Klasse serialisieren/deserialisieten vielleicht? Da haste dann am Ende ne XML.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    XML, Ini (veraltet) oder einfach .Settings
    Datenbank könnte ebenfalls interessant sein. Diese können ja auch portable sein :)
    Natürlich gibt es noch weitere Methoden.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    @Kenaex Diese Struktur schreit nach XML-Serialisiereung.
    @Gather Solche Daten gehören nicht in die Settings.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Kenaex So was:
    Settings speichern und laden

    C#-Quellcode

    1. using System.IO;
    2. using System.Xml.Serialization;
    3. /// <summary>
    4. /// Klasse, die die Settings speichert und lädt
    5. /// </summary>
    6. public static class MyParamHandling
    7. {
    8. /// <summary>
    9. /// Speichern der Settings als XML-Datei
    10. /// </summary>
    11. /// <param name="settings">zu speichernde Settings</param>
    12. /// <param name="path">Pfad der XML-Datei</param>
    13. public static void WriteSettings(MyParam settings, string path)
    14. {
    15. if (settings == null)
    16. {
    17. return;
    18. }
    19. // Serialize object to a XML file.
    20. using (StreamWriter sw = new StreamWriter(path))
    21. {
    22. XmlSerializer x = new XmlSerializer(settings.GetType());
    23. x.Serialize(sw, settings);
    24. }
    25. }
    26. /// <summary>
    27. /// Laden der Settings
    28. /// </summary>
    29. /// <param name="path">Pfad der XML-Datei</param>
    30. /// <returns>die geladenen Settings</returns>
    31. public static MyParam ReadSettings(string path)
    32. {
    33. MyParam settings = new MyParam();
    34. try
    35. {
    36. // Deserialize text file to a new object.
    37. using (StreamReader sr = new StreamReader(path))
    38. {
    39. XmlSerializer x = new XmlSerializer(settings.GetType());
    40. settings = (MyParam)x.Deserialize(sr);
    41. }
    42. }
    43. catch
    44. {
    45. // nix tun, die Settings-Instanz ist nicht valid,
    46. // es werden die Default-Werte zurückgegeben
    47. }
    48. return settings;
    49. }
    50. }

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!