11 internal sealed
class SettingsService : ISettingsService
16 public SettingsService()
20 private static void AssertNonEmptyPRefix(
string KeyPrefix)
22 if (
string.IsNullOrWhiteSpace(KeyPrefix))
23 throw new ArgumentException(
"Empty key prefix not permitted.", nameof(KeyPrefix));
31 public async Task SaveState(
string Key,
string State)
40 ServiceRef.LogService.LogException(ex);
49 public async Task SaveState(
string Key,
long State)
58 ServiceRef.LogService.LogException(ex);
67 public async Task SaveState(
string Key,
double State)
76 ServiceRef.LogService.LogException(ex);
85 public async Task SaveState(
string Key,
bool State)
94 ServiceRef.LogService.LogException(ex);
103 public async Task SaveState(
string Key, DateTime State)
112 ServiceRef.LogService.LogException(ex);
121 public async Task SaveState(
string Key, TimeSpan State)
130 ServiceRef.LogService.LogException(ex);
139 public async Task SaveState(
string Key, Enum State)
148 ServiceRef.LogService.LogException(ex);
157 public async Task SaveState(
string Key,
object State)
166 ServiceRef.LogService.LogException(ex);
176 public async Task<string?> RestoreStringState(
string Key,
string? DefaultValueIfNotFound =
default)
184 ServiceRef.LogService.LogException(ex);
187 return DefaultValueIfNotFound;
196 public async Task<long> RestoreLongState(
string Key,
long DefaultValueIfNotFound =
default)
204 ServiceRef.LogService.LogException(ex);
207 return DefaultValueIfNotFound;
216 public async Task<double> RestoreDoubleState(
string Key,
double DefaultValueIfNotFound =
default)
224 ServiceRef.LogService.LogException(ex);
227 return DefaultValueIfNotFound;
236 public async Task<bool> RestoreBoolState(
string Key,
bool DefaultValueIfNotFound =
default)
244 ServiceRef.LogService.LogException(ex);
247 return DefaultValueIfNotFound;
256 public async Task<DateTime> RestoreDateTimeState(
string Key, DateTime DefaultValueIfNotFound =
default)
264 ServiceRef.LogService.LogException(ex);
267 return DefaultValueIfNotFound;
276 public async Task<TimeSpan> RestoreTimeSpanState(
string Key, TimeSpan DefaultValueIfNotFound =
default)
284 ServiceRef.LogService.LogException(ex);
287 return DefaultValueIfNotFound;
296 public async Task<Enum?> RestoreEnumState(
string Key, Enum? DefaultValueIfNotFound =
default)
304 ServiceRef.LogService.LogException(ex);
307 return DefaultValueIfNotFound;
317 public async Task<T?> RestoreState<T>(
string Key, T? DefaultValueIfNotFound =
default)
319 if (
string.IsNullOrWhiteSpace(Key))
320 return DefaultValueIfNotFound;
326 if (existingState is T TypedValue)
329 return DefaultValueIfNotFound;
333 ServiceRef.LogService.LogException(ex);
336 return DefaultValueIfNotFound;
343 public async Task RemoveState(
string Key)
345 AssertNonEmptyPRefix(Key);
354 ServiceRef.LogService.LogException(ex);
362 public Task<bool> WaitInitDone()
364 return ServiceRef.StorageService.WaitInitDone();
Static interface for database persistence. In order to work, a database provider has to be assigned t...
static IDatabaseProvider Provider
Registered database provider.
Static class managing persistent settings.
static async Task< string > GetAsync(string Key, string DefaultValue)
Gets a string-valued setting.
static async Task< bool > DeleteAsync(string Key)
Deletes a runtime setting
static async Task< bool > SetAsync(string Key, string Value)
Sets a string-valued setting.
Task Flush()
Persists any pending changes.