Benutzer mit den meisten Antworten
Settings-Konstruktoren werden nicht korrekt gespeichert

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
Antworten
-
Hallo Hamit,
tja, und wie sieht dann Word aus???
Sei es drum - Dein Code plus etwas Fantasie funktioniert:
Gruß Elmarpublic 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 }); } } }
- Als Antwort markiert Robert Breitenhofer Montag, 18. Juli 2011 08:54
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
-
Hallo Hamit,
tja, und wie sieht dann Word aus???
Sei es drum - Dein Code plus etwas Fantasie funktioniert:
Gruß Elmarpublic 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 }); } } }
- Als Antwort markiert Robert Breitenhofer Montag, 18. Juli 2011 08:54