namespace Toolkit.Foundation; public class ConfigurationInitializer(string section, IConfigurationReader reader, IConfigurationWriter writer, IConfigurationFactory factory, IPublisher publisher) : IConfigurationInitializer, IInitializer where TConfiguration : class { public async Task Initialize() { var d = section; if (!reader.TryRead(out TConfiguration? configuration)) { if (factory.Create() is object defaultConfiguration) { configuration = (TConfiguration?)defaultConfiguration; writer.Write(defaultConfiguration); } } await publisher.PublishUI(new Changed(configuration)); } }