namespace Hyperbar; public class ConfigurationInitializer(IConfigurationMonitor monitor, IConfigurationReader reader, IConfigurationWriter writer, IConfigurationFactory factory) : IConfigurationInitializer, IInitializer where TConfiguration : class { public async Task InitializeAsync() { if (!reader.TryRead(out TConfiguration? _)) { if (factory.Create() is TConfiguration configuration) { writer.Write(configuration); } } await monitor.InitializeAsync(); } }