La forma predeterminada de resolverlo es usar archivos de configuración. El problema con los archivos de configuración es que debe definir todas las configuraciones y escribir el código que copia los datos de un lado a otro. Bastante tedioso si tiene muchas propiedades de las que realizar un seguimiento.
Hice una biblioteca bastante flexible y muy fácil de usar para esto, solo dígale qué propiedades de qué objeto rastrear y él hace el resto. También puede configurar la mierda si lo desea.
La biblioteca se llama Jot (github) , aquí hay un artículo antiguo de CodeProject que escribí al respecto.
Así es como lo usaría para realizar un seguimiento del tamaño y la ubicación de una ventana:
public MainWindow()
{
InitializeComponent();
_stateTracker.Configure(this)
.IdentifyAs("MyMainWindow")
.AddProperties(nameof(Height), nameof(Width), nameof(Left), nameof(Top), nameof(WindowState))
.RegisterPersistTrigger(nameof(Closed))
.Apply();
}
Archivos Jot frente a archivos de configuración: con Jot hay considerablemente menos código y es mucho menos propenso a errores, ya que solo necesita mencionar cada propiedad una vez . Con los archivos de configuración, debe mencionar cada propiedad 5 veces : una cuando crea explícitamente la propiedad y cuatro veces adicionales en el código que copia los valores de un lado a otro.
El almacenamiento, la serialización, etc. son completamente configurables. Además, al usar IOC, incluso puede conectarlo para que aplique el seguimiento automáticamente a todos los objetos que resuelve, de modo que todo lo que necesita hacer para que una propiedad sea persistente es colocar un atributo [Trackable] en ella.
Estoy escribiendo todo esto porque creo que la biblioteca es de primera categoría y quiero hablar sobre ello.