Często w aplikacjach tworzonych na Windows Phone 7 posługujemy się ustawieniami aplikacji, dzięki czemu staje się ona bardziej przyjazna dla użytkownika. Służy do tego klasa IsolatedStorageSettings wraz ze słownikiem ApplicationSettings. Okazuje się jednak, że kod odpowiedzialny za ciągłe sprawdzanie zawartych w niej danych oraz ich rzutowanie na odpowiednie typy powtarza się w wielu miejscach. Przedstawiam zatem moje podejście, które stosuję w praktyczniej każdej aplikacji na WP7 i umieszczam je w klasie SettingsProvider.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class SettingsProvider
{
	...
 
	#region internal
	private static void SetValue(string key, T value)
	{
		if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
		{
			IsolatedStorageSettings.ApplicationSettings[key] = value;
		}
		else
		{
			IsolatedStorageSettings.ApplicationSettings.Add(key, value);
		}
	}
 
	private static T GetValueOrDefault(string key, T defaultValue)
	{
		if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
		{
			return (T)IsolatedStorageSettings.ApplicationSettings[key];
		}
		else
		{
			IsolatedStorageSettings.ApplicationSettings.Add(key, defaultValue);
			return defaultValue;
		}
	}
	#endregion
}

Dzięki temu mogę w prosty sposób uwidocznić dla pozostałych komponentów projektu właściwości korzystające z przedstawionych powyżej metod generycznych. Na przykład w ten sposób:

1
2
3
4
5
public string UserName
{
	get { return GetValueOrDefault("UserName", ""); }
	set { SetValue("UserName", value); }
}

Mam nadzieję, że przedstawiony kawałek kodu przyda się wam do wygodniejszego i szybszego korzystania z ustawień aplikacji na Windows Phone :)