namespace Toolkit.Foundation; public class ConfigurationWriter(IConfigurationSource source, IConfigurationFactory factory) : IConfigurationWriter where TConfiguration : class { public void Write(Action updateDelegate) { if (!source.TryGet(out TConfiguration? value)) { value = (TConfiguration)factory.Create(); } if (value is not null) { updateDelegate?.Invoke(value); Write(value); } } public void Write(object value) => source.Set(value); public void Write(TConfiguration value) => source.Set(value); }