Skorzystanie z ApplicationSettingsBase pozwala nam zachowanie oddzielnych konfiguracji naszego programu dla wielu użytkowników. Opcja ta jest przydatna, kiedy z jednego komputera korzysta wiele osób i każda z nich chce posiadać własną konfigurację programu. Przechowywanie jednej konfiguracji dla programu w tym momencie staje się bezużyteczne ale z pomocą przychodzi nam ApplicationSettingsBase.
Aby skorzystać z w/w klasy wystarczy dodać przestrzeń nazw
using System.Configuration
oraz ustawić dziedziczenie naszej klasy po klasie:
ApplicationSettingsBase
Do ustawień zapisanych w konfiguracji użytkownika odwołujemy się jak do właściwości. Jednak nad właściwościami musimy zadeklarować atrybuty. Podstawowym wymaganym atrybutem jest
[UserScopedSettingAttribute()]
który informuje klasę, że poniższe właściwości będą używane do zapisywania danych. Ponadto mamy możliwość skorzystania z wielu innych atrybutów takich jak
[DefaultSettingValueAttribute("DefaultSetting")
który w przypadku braku zadeklarowanej wartości w pliku konfiguracyjnym zwraca nam domyślną wartość. Jeżeli nie zabezpieczymy się w/w sposób, a użytkownik będzie chciał odczytać wartość, której nie posiadamy w pliku konfiguracyjnym, w odpowiedzi otrzymamy nulla.
Poniżej przykład wykorzystania
[UserScopedSettingAttribute()] [DefaultSettingValueAttribute("Przemysław")] public String Name { get { return (String)this["Name"]; } set { this["Name"] = value; } } [UserScopedSettingAttribute()] [DefaultSettingValueAttribute("22")] public int Age { get { return (Int32)this["Age"]; } set { this["Age"] = value; } } [UserScopedSettingAttribute()] [DefaultSettingValueAttribute("true")] public Boolean Programmer { get { return (Boolean)this["Programmer"]; } set { this["Programmer"] = value; } }
Domyślną ścieżką zapisu dla ustawień użytkownika jest plik znajdujący się w ścieżce:
C:UsersUserAppDataLocal<nazwa aplikacji><hash kod><wersja programu>user.config
Do odczytu lub zapisu danych musimy powołać obiekt naszej klasy, następnie wywołujemy właściwość. W przypadku, kiedy chcemy zapisać dane ustawienie, podajemy właściwości nową wartość i z uchwytu wywołujemy metodę Save().
Przykład poniżej
UserConfig uc = new UserConfig (); MessageBox.Show(uc.Programmer); uc.Age = 33; uc.Save();