Files
Pilz/Pilz.Configuration/Settings.cs
2024-06-05 19:15:32 +02:00

35 lines
921 B
C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace Pilz.Configuration;
public class Settings : ISettings
{
[JsonProperty(nameof(Settings))]
protected readonly Dictionary<string, IChildSettings> mySettings = [];
[JsonIgnore]
public IReadOnlyCollection<IChildSettings> Childs => mySettings.Values;
public T Get<T>() where T : IChildSettings, ISettingsIdentifier
{
if (mySettings.TryGetValue(T.Identifier, out IChildSettings valueExisting) && valueExisting is T settingsExisting)
return settingsExisting;
if (Activator.CreateInstance<T>() is T settingsNew)
{
settingsNew.Reset();
mySettings.Add(T.Identifier, settingsNew);
return settingsNew;
}
return default;
}
public void Reset()
{
foreach (var s in mySettings.Values)
s.Reset();
}
}