namespace Toolkit.Foundation; public class ConfigurationInitializer(IConfigurationReader reader, IConfigurationWriter writer, IConfigurationFactory factory, IPublisher publisher) : IConfigurationInitializer, IInitialization where TConfiguration : class { public Task Initialize() { if (!reader.TryRead(out TConfiguration? configuration)) { if (factory.Create() is object defaultConfiguration) { configuration = (TConfiguration?)defaultConfiguration; writer.Write(defaultConfiguration); } } publisher.PublishUI(new ActivatedEventArgs(configuration)); return Task.CompletedTask; } }