Bunu çözmenin varsayılan yolu, ayarlar dosyalarını kullanmaktır. Ayarlar dosyalarındaki sorun, tüm ayarları tanımlamanız ve verileri kopyalayan kodu kendi başınıza yazmanız gerektiğidir. Takip etmeniz gereken çok sayıda mülkünüz varsa oldukça sıkıcı.
Bunun için oldukça esnek ve kullanımı çok kolay bir kitaplık yaptım, ona sadece hangi nesnenin hangi özelliklerini izleyeceğini söyleyin ve gerisini o halleder. İsterseniz boktan şeyleri de yapılandırabilirsiniz.
Kitaplığın adı Jot (github) , işte onun hakkında yazdığım eski bir CodeProject makalesi .
Bir pencerenin boyutunu ve konumunu takip etmek için bunu şu şekilde kullanabilirsiniz:
public MainWindow()
{
InitializeComponent();
_stateTracker.Configure(this)
.IdentifyAs("MyMainWindow")
.AddProperties(nameof(Height), nameof(Width), nameof(Left), nameof(Top), nameof(WindowState))
.RegisterPersistTrigger(nameof(Closed))
.Apply();
}
Nota ve ayar dosyalarına karşı: Jot ile çok daha az kod vardır ve her özellikten yalnızca bir kez bahsetmeniz gerektiğinden hataya çok daha az meyillidir . Ayarlar dosyalarıyla, her bir özelliği 5 kez belirtmeniz gerekir : bir kez özelliği açıkça oluşturduğunuzda ve değerleri ileri geri kopyalayan kodda ek olarak dört kez.
Depolama, serileştirme vb. Tamamen yapılandırılabilir. Ayrıca, IOC'yi kullanırken, izlemeyi çözdüğü tüm nesnelere otomatik olarak uygulayacak şekilde bağlayabilirsiniz, böylece bir mülkü kalıcı kılmak için tek yapmanız gereken, üzerine bir [İzlenebilir] özniteliği eklemektir.
Bütün bunları yazıyorum çünkü kütüphanenin birinci sınıf olduğunu düşünüyorum ve bu konuda ağzımdan çıkmak istiyorum.