using CommunityToolkit.Mvvm.Messaging; namespace Toolkit.Foundation; public static class IMessengerExtensions { public static TResponse Send(this IMessenger messenger) where TMessage : class, new() { ResponseEventArgs args = messenger.Send(new ResponseEventArgs { Message = new TMessage() }); return args.Response; } public static TResponse Send(this IMessenger messenger, TMessage message) where TMessage : class { ResponseEventArgs args = messenger.Send(new ResponseEventArgs { Message = message }); return args.Response; } public static void Send(this IMessenger messenger, TMessage message, string key) where TMessage : class => messenger.Send(message, key); public static void Send(this IMessenger messenger, string key) where TMessage : class, new() => messenger.Send(new TMessage(), key); public static async Task SendAsync(this IMessenger messenger) where TMessage : class, new() => await messenger.Send(new AsyncResponseEventArgs { Message = new TMessage() }); public static async Task SendAsync(this IMessenger messenger, string key) where TMessage : class, new() => await messenger.Send(new AsyncResponseEventArgs { Message = new TMessage() }, key); public static async Task SendAsync(this IMessenger messenger, TMessage message) where TMessage : class => await messenger.Send(new AsyncResponseEventArgs { Message = message }); public static async Task SendAsync(this IMessenger messenger, TMessage message, string key) where TMessage : class => await messenger.Send(new AsyncResponseEventArgs { Message = message }, key); public static async Task SendAsync(this IMessenger messenger) where TMessage : class, new() => await messenger.Send(new AsyncResponseEventArgs { Message = new TMessage() }); public static async Task SendAsync(this IMessenger messenger, string key) where TMessage : class, new() => await messenger.Send(new AsyncResponseEventArgs { Message = new TMessage() }, key); public static async Task SendAsync(this IMessenger messenger, TMessage message) where TMessage : class => await messenger.Send(new AsyncResponseEventArgs { Message = message }); public static async Task SendAsync(this IMessenger messenger, TMessage message, string key) where TMessage : class => await messenger.Send(new AsyncResponseEventArgs { Message = message }, key); }