none
Settings-Konstruktoren werden nicht korrekt gespeichert RRS feed

  • Frage

  • Ich habe in meinem Programm eine Klasse "Vocabulary", aus der ich eine Instanz als Setting erzeugt habe.

    Nun habe ich in der Anfangsmethode des Programms folgenden code:

    (den Namespace <Projektname>.Properties hane ich mit "using" importiert)

    //Beim ersten Ausführen wird die Setting vocabulary konstruiert
    
    if(!Settings.default.vocabulary_constructed)
    {
       Settings.Default.vocabulary = new Vocabulary();
       Settings.Default.vocabulary_constructed = true;
       Settings.Default.Save();
    }
    


    Nun meldet das Programm allerdings jedes Mal, wenn ich es ausführe, dass vocabulary NICHT mit dem new-Schlüsselwort erzeugt  worden wäre, was ja nicht stimmt, da dies ja beim ersten Mal geschah und das Setting danach gespeichert wurde. 

    Was kann man dagegen tun?

    • Bearbeitet Robert Breitenhofer Montag, 18. Juli 2011 08:56 Titel Korrektur: war PROBLEM: Settings-Konstruktoren werden nicht korrekt gespeichert
    Donnerstag, 30. Juni 2011 13:26

Antworten

  • Hallo Hamit,

    tja, und wie sieht dann Word aus???

    Sei es drum - Dein Code plus etwas Fantasie funktioniert:

      public class Word
      {
        public string Deutsch { get; set; }
        public string Englisch { get; set; }
        public Boolean Richtig { get; set; }
      }
    
      public class Vocabulary : List<Word>
      {
        public Vocabulary()
        {
          if (defaults)
          {
            this.Add(new Word() { Deutsch = "Ich", Englisch = "I", Richtig = true });
            this.Add(new Word() { Deutsch = "war", Englisch = "was", Richtig = true });
            this.Add(new Word() { Deutsch = "hier", Englisch = "here", Richtig = false });
          }
        }
      }
    
    
    Gruß Elmar

     

    Freitag, 1. Juli 2011 15:52

Alle Antworten

  • Hallo Hamit,

    wie sieht die Klasse Vocabulary aus?
    Damit sie in den Settings gespeichert werden kann, muss sie serialisierbar sein.
    Wobei für die Lesbarkeit die Klasse Xml-serialisierbar sein sollte, siehe Einführung in die XML-Serialisierung.
    Was u. a. bedeutet, dass dabei nur öffentliche Eigenschaften serialisiert werden.

    Gruß Elmar

    Donnerstag, 30. Juni 2011 14:09
  • sie ist elne Liste und wurde per Vererbung aus List<Word> geklont.

     

    Freitag, 1. Juli 2011 13:06
  • Hallo Hamit,

    tja, und wie sieht dann Word aus???

    Sei es drum - Dein Code plus etwas Fantasie funktioniert:

      public class Word
      {
        public string Deutsch { get; set; }
        public string Englisch { get; set; }
        public Boolean Richtig { get; set; }
      }
    
      public class Vocabulary : List<Word>
      {
        public Vocabulary()
        {
          if (defaults)
          {
            this.Add(new Word() { Deutsch = "Ich", Englisch = "I", Richtig = true });
            this.Add(new Word() { Deutsch = "war", Englisch = "was", Richtig = true });
            this.Add(new Word() { Deutsch = "hier", Englisch = "here", Richtig = false });
          }
        }
      }
    
    
    Gruß Elmar

     

    Freitag, 1. Juli 2011 15:52
  • Hallo Elmar,

    wenn schon public Boolean Richtig..., dann auch bitte public String Englisch... ;-)

    Gruß
    Martin 

    Samstag, 2. Juli 2011 16:13
  • Hallo Elmar,

    wenn schon public Boolean Richtig..., dann auch bitte public String Englisch... ;-)

    Gruß
    Martin 

    Oh wie schlimm!  ;-)
    Samstag, 9. Juli 2011 10:43