Ich schreibe eine Anwendung, die Benutzerdaten aufnimmt und lokal zur späteren Verwendung speichert. Die Anwendung wird ziemlich oft gestartet und gestoppt, und ich möchte, dass die Daten beim Start / Ende der Anwendung gespeichert / geladen werden.
Es wäre ziemlich einfach, wenn ich flache Dateien verwenden würde, da die Daten nicht wirklich gesichert werden müssen (sie werden nur auf diesem PC gespeichert). Die Optionen, die ich glaube, sind also:
- Flat Files
- XML
- SQL DB
Die Pflege von Flatfiles erfordert etwas mehr Aufwand (keine integrierten Klassen wie bei XML), ich habe jedoch noch kein XML verwendet, und SQL scheint für diese relativ einfache Aufgabe ein Overkill zu sein.
Gibt es noch andere Möglichkeiten, die es wert sind, erkundet zu werden? Wenn nicht, welche davon ist die beste Lösung?
Bearbeiten: Um dem Problem ein wenig mehr Daten hinzuzufügen, möchte ich im Grunde nur ein Wörterbuch speichern, das so aussieht
Dictionary<string, List<Account>>
Dabei ist Konto ein anderer benutzerdefinierter Typ.
Würde ich das Diktat als XML-Wurzel und dann den Kontotyp als Attribute serialisieren?
Update 2:
So ist es möglich, ein Wörterbuch zu serialisieren. Was es kompliziert macht, ist, dass der Wert für dieses Diktat selbst ein Generikum ist, bei dem es sich um eine Liste komplexer Datenstrukturen vom Typ Konto handelt. Jedes Konto ist ziemlich einfach, es sind nur eine Reihe von Eigenschaften.
Nach meinem Verständnis besteht das Ziel hier darin, Folgendes zu erreichen:
<Username1>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
</Username1>
<Username2>
<Account1>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account1>
<Account2>
<Data1>data1</Data1>
<Data2>data2</Data2>
</Account2>
</Username2>
Wie Sie sehen können, ist die Erbschaft
- Benutzername (Zeichenfolge)>
- Konto (jedes Konto in der Liste)>
- Kontodaten (dh Klasseneigenschaften).
Dieses Layout von a zu erhalten, Dictionary<Username, List<Account>>
ist das Knifflige und das Wesentliche dieser Frage.
Hier gibt es viele Anleitungen zur Serialisierung, was meine Schuld ist, da ich es nicht frühzeitig klarer gemacht habe, aber jetzt suche ich nach einer definitiven Lösung.