using Mediator; namespace Toolkit.Foundation { public class WriteHandler : IRequestHandler> where TConfiguration : class { private readonly IMediator mediator; private readonly TConfiguration configuration; private readonly IConfigurationWriter writer; public WriteHandler(TConfiguration configuration, IConfigurationWriter writer, IMediator mediator) { this.mediator = mediator; this.configuration = configuration; this.writer = writer; } public async ValueTask Handle(Write request, CancellationToken cancellationToken) { request.UpdateDelegate.Invoke(configuration); writer.Write(request.Section, configuration); await mediator.Send(new ConfigurationChanged(configuration), cancellationToken); return default; } } }