Jezli dobrze rozumiem co masz na mysli to potrzebujesz cos takiego:
Name | Value | UserName
Foos | "[ 1, 2, 3, 4 ]" | *
Foos | "[ 12, 80, 33, 5 ]" | palcekj
Baz | 1234.5 | *
czyli jakies domyslne ustawienia "*" i ustawienia uzytkownika.
Do domyslnych ustawien przygotowujesz sobie jeden skrypt gdzie w miejsce uzytkownika wpisujesz "*" (gwiazki). Potem ustawienia uzytkownika albo gdzies w UI zmieniasz albo masz drugi skrypt, ktory takie dopisuje do bazy.
W takim razie konfiguracja wygladac moze tak:
[SmartConfig]
static class MyConfig
{
public static List<int> Foos { get; set; }
public static double Baz { get; set; }
}
Jako ze masz dodatkowa kolumne dla uzytkownika to potrzebujesz nowego typu do ustawien czyli:
class CustomSetting : BaseSetting
{
[SettingFilter(typeof(StringFilter)]
public string UserName { get; set; }
}
...i ladujesz konfiguracje przy pomocy:
Configuration
.Load(typeof(MyConfig), converters =>
{
converters.Add<JsonConverter>(converter => coverter.AddObjectType<List<int>>());
})
.From(new SqlServerStore<CustomSetting>(connectionString, settingTableName), dataStore =>
{
dataStore.SetCustomKey("UserName", "palcekj");
});
Dotyczy to wersji 6.0 (lada dzien bedzie jako NuGet). W poprzedniej bylo to troche bardziej skaplikowane.
Ogolnie chodzi o to zeby dodac nowy konwerter/serializer czy jak go tam zwal ;] i podac mu jakie typy ma obslugiwac. JsonConverter korzysta z biblioteki Json.NET dlatego ustawienia w tym polu musza byc w formacie JSON.
Gotowe. Jako, ze klasa i pola sa statyczne moze ich uzywac bez tworzedania instancji.