Die Standardlösung besteht darin, Einstellungsdateien zu verwenden. Das Problem mit Einstellungsdateien besteht darin, dass Sie alle Einstellungen definieren und den Code schreiben müssen, der die Daten selbst hin und her kopiert. Ziemlich langweilig, wenn Sie viele Eigenschaften im Auge behalten müssen.
Ich habe dafür eine ziemlich flexible und sehr einfach zu verwendende Bibliothek erstellt. Sie sagen ihr einfach, welche Eigenschaften von welchem Objekt verfolgt werden sollen, und sie erledigt den Rest. Sie können den Mist auch daraus konfigurieren, wenn Sie möchten.
Die Bibliothek heißt Jot (Github) , hier ist ein alter CodeProject-Artikel, den ich darüber geschrieben habe.
So würden Sie es verwenden, um die Größe und Position eines Fensters zu verfolgen:
public MainWindow()
{
InitializeComponent();
_stateTracker.Configure(this)
.IdentifyAs("MyMainWindow")
.AddProperties(nameof(Height), nameof(Width), nameof(Left), nameof(Top), nameof(WindowState))
.RegisterPersistTrigger(nameof(Closed))
.Apply();
}
Jot vs. Einstellungsdateien: Mit Jot gibt es erheblich weniger Code und es ist viel weniger fehleranfällig, da Sie jede Eigenschaft nur einmal erwähnen müssen . Bei Einstellungsdateien müssen Sie jede Eigenschaft fünfmal erwähnen : einmal, wenn Sie die Eigenschaft explizit erstellen, und weitere viermal im Code, der die Werte hin und her kopiert.
Speicher, Serialisierung usw. sind vollständig konfigurierbar. Wenn Sie IOC verwenden, können Sie es sogar so anschließen, dass die Nachverfolgung automatisch auf alle aufgelösten Objekte angewendet wird. Alles, was Sie tun müssen, um eine Eigenschaft dauerhaft zu machen, ist, ein Attribut [Nachverfolgbar] darauf zu setzen.
Ich schreibe das alles, weil ich denke, dass die Bibliothek erstklassig ist und ich darüber reden möchte.