Announcement

Collapse
No announcement yet.

Vokabeltrainer unter C#

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    1.) wie speichere ich nun die vokabeln am besten im programm? ich will ein xml-file nutzen, um sie reinzuladen, aber was für eine struktur sollte ich im programm benutzen? ich hab mir arrays überlegt, aber bin über eure meinung über eine bessere lösung dankbar...
    Einfach eine generische Liste nehmen also List<T>. Ich würde sogar davon ableiten und die Funktionen die mir bestimmte Vokabeln liefern (du wirst ja wahrscheinlich irgendwelche Random Methoden haben dir dir zufällig Vokabeln zum abfragen liefern) darin implementieren.

    Serialisieren/deserialisieren geht dann ganz einfach.

    [Highlight=C#]_ public class MeineLiebeVokabel
    {
    // blah
    }

    public class MeineLiebeVokabelListe : List<MeineLiebeVokabel>
    {
    // blah

    public void Save()
    {
    XmlSerializer xs = new XmlSerializer(typeof(MeineLiebeVokabelListe));
    using(StreamWriter sw = new StreamWriter(MeinLieberDateipfad))
    {
    xs.Serialize(sw, this);
    }
    }

    public static MeineLiebeVokabelListe Load()
    {
    XmlSerializer xs = new XmlSerializer(typeof(MeineLiebeVokabelListe));
    StreamReader sr;
    using(sr = new StreamReader(MeinLieberDateipfad))
    {
    return (MeineLiebeVokabelListe)xs.Deserialize(sr);
    }
    }
    }[/Highlight]

    Disclaimer - Errorhandling absichtlich nicht enthalten!


    2.) wie greifen meine textfields aus der windows-form auf die variablen im program.cs zu?
    Autsch!!! Die Frage tut weh. Hör auf Jürgen

    Comment


    • #17
      Muss man die vererbte Klasse nicht als [Serializable] markieren?

      Comment


      • #18
        Muss man die vererbte Klasse nicht als [Serializable] markieren?
        Nicht beim XMLSerializer. AFAIK hilft dir das SerializableAttribute nur beim BinaryFormatter.

        Edit: Das SerializableAttribute hilft bei jedem Formatter nicht nur dem BinaryFormatter.
        Zuletzt editiert von Ralf Jansen; 14.12.2009, 13:09.

        Comment


        • #19
          Und wenn Du möchtest das die Knoten im XML File anders heissen als in deiner Klasse, dann solltest Du Dir mal die ISerializable Schnittstelle anstellen.

          Vorsicht zum Zurücklesen braucht man noch einen bestimmten Konstruktor der in der Schnittstelle nicht enthalten ist.

          Comment


          • #20
            Und wenn Du möchtest das die Knoten im XML File anders heissen als in deiner Klasse, dann solltest Du Dir mal die ISerializable Schnittstelle anstellen.
            Nur umbenennen geht wiederum sehr gut mit Attributen. Da wären XmlAttribute, XmlArray und XmlArrayItem.
            ISerializable würde ich nur anfassen wenn ich nicht serialisierbare Datentypen hätte (z.b Dictionary<T>).

            Comment

            Working...
            X