using CommunityToolkit.Mvvm.Messaging; using Microsoft.Extensions.DependencyInjection; namespace Toolkit.Foundation; public class AsyncHandlerKeyedInitialization(string key, IServiceProvider provider) : IInitialization where THandler : class, IAsyncHandler where TMessage : class { public void Initialize() { if (!StrongReferenceMessenger.Default.IsRegistered, string>(provider, key)) { StrongReferenceMessenger.Default.Register, string>(provider, key, (provider, args) => { foreach (IAsyncHandler handler in provider.GetKeyedServices>(key)) { handler.Handle(args.Message, args.CancellationToken); args.Reply(Unit.Value); } }); } } } public class AsyncHandlerKeyedInitialization(string key, IServiceProvider provider) : IInitialization where THandler : class, IAsyncHandler where TMessage : class { public void Initialize() { if (!StrongReferenceMessenger.Default.IsRegistered, string>(provider, key)) { StrongReferenceMessenger.Default.Register, string>(provider, key, (provider, args) => { foreach (IAsyncHandler handler in provider.GetKeyedServices>(key)) { args.Reply(handler.Handle(args.Message, args.CancellationToken)); } }); } } }