Add some WinUI work

This commit is contained in:
Dan Clark
2024-11-17 21:25:27 +00:00
parent b5bf17821c
commit 796ef41e3f
25 changed files with 426 additions and 159 deletions
@@ -7,14 +7,14 @@ public class AsyncHandlerInitialization<TMessage, TResponse, THandler>(IServiceP
IInitialization where THandler : class, IAsyncHandler<TMessage, TResponse>
where TMessage : class
{
public void Initialize() => WeakReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>>(provider,
async (provider, args) => args.Reply(await provider.GetRequiredService<THandler>().Handle(args.Message, args.CancellationToken)));
public void Initialize() => StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>>(provider,
(provider, args) => args.Reply(provider.GetRequiredService<THandler>().Handle(args.Message, args.CancellationToken)));
}
public class AsyncHandlerInitialization<TMessage, THandler>(IServiceProvider provider) :
IInitialization where THandler : class, IAsyncHandler<TMessage>
where TMessage : class
{
public void Initialize() => WeakReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>>(provider,
async (provider, args) => await provider.GetRequiredService<THandler>().Handle(args.Message, args.CancellationToken));
public void Initialize() => StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>>(provider,
(provider, args) => provider.GetRequiredService<THandler>().Handle(args.Message, args.CancellationToken));
}
+1 -1
View File
@@ -5,7 +5,7 @@ namespace Toolkit.Foundation;
public class AsyncResponseEventArgs<TMessage, TResponse> :
AsyncRequestMessage<TResponse>
{
public TMessage? Message { get; set; }
public required TMessage Message { get; set; }
public CancellationToken CancellationToken { get; set; }
}
+4 -10
View File
@@ -20,14 +20,8 @@ public class DefaultHostBuilder :
ComponentHostCollection>();
services.AddSingleton<IDisposer, Disposer>();
services.AddSingleton<IMessenger, WeakReferenceMessenger>(_ => WeakReferenceMessenger.Default);
services.AddSingleton<IMessenger, StrongReferenceMessenger>(_ => StrongReferenceMessenger.Default);
//services.AddScoped<SubscriptionCollection>();
//services.AddTransient<IHandlerProvider, HandlerProvider>();
//services.AddScoped<ISubscriber, Subscriber>();
//services.AddTransient<IPublisher, Publisher>();
//services.AddTransient<IMediator, Mediator>();
services.AddTransient<IValidation, Validation>();
services.AddTransient<IValidatorCollection, ValidatorCollection>();
@@ -57,10 +51,10 @@ public class DefaultHostBuilder :
services.AddTransient<IComponentFactory, ComponentFactory>();
services.AddTransient<IComponentScopeProvider, ComponentScopeProvider>();
//services.AddHandler<NavigateHandler>();
//services.AddHandler<NavigateBackHandler>();
services.AddHandler<NavigateEventArgs, NavigateHandler>();
services.AddHandler<NavigateBackEventArgs, NavigateBackHandler>();
//services.AddInitialization<ComponentInitializer>();
services.AddInitialization<ComponentInitializer>();
services.AddHostedService<AppService>();
});
}
+3 -3
View File
@@ -7,7 +7,7 @@ public class HandlerInitialization<TMessage, TResponse, THandler>(IServiceProvid
IInitialization where THandler : class, IHandler<TMessage, TResponse>
where TMessage : class
{
public void Initialize() => WeakReferenceMessenger.Default.Register<IServiceProvider, ResponseEventArgs<TMessage, TResponse>>(provider,
public void Initialize() => StrongReferenceMessenger.Default.Register<IServiceProvider, ResponseEventArgs<TMessage, TResponse>>(provider,
(provider, args) => args.Reply(provider.GetRequiredService<THandler>().Handle(args.Message)));
}
@@ -15,7 +15,7 @@ public class HandlerInitialization<TMessage, THandler>(IServiceProvider provider
IInitialization where THandler : class, IHandler<TMessage>
where TMessage : class
{
public void Initialize() => WeakReferenceMessenger.Default.Register<IServiceProvider, TMessage>(provider,
public void Initialize() => StrongReferenceMessenger.Default.Register<IServiceProvider, TMessage>(provider,
(provider, args) => provider.GetRequiredService<THandler>().Handle(args));
}
@@ -23,6 +23,6 @@ public class HandlerKeyedInitialization<TMessage, THandler>(string key, IService
IInitialization where THandler : class, IHandler<TMessage>
where TMessage : class
{
public void Initialize() => WeakReferenceMessenger.Default.Register<IServiceProvider, TMessage, string>(provider, key,
public void Initialize() => StrongReferenceMessenger.Default.Register<IServiceProvider, TMessage, string>(provider, key,
(provider, args) => provider.GetRequiredKeyedService<THandler>(key).Handle(args));
}
+21 -3
View File
@@ -11,9 +11,27 @@ public static class IMessengerExtensions
return args.Response;
}
public static void Send<TMessage>(this IMessenger messenger, string key)
where TMessage : class, new() => messenger.Send(new TMessage(), key);
public static TResponse Send<TMessage, TResponse>(this IMessenger messenger,
TMessage message)
where TMessage : class
{
ResponseEventArgs<TMessage, TResponse> args = messenger.Send(new ResponseEventArgs<TMessage, TResponse> { Message = message });
return args.Response;
}
public static void Send<TMessage>(this IMessenger messenger,
TMessage message, string key) where TMessage : class =>
messenger.Send(message, key);
public static void Send<TMessage>(this IMessenger messenger,
string key) where TMessage : class, new() =>
messenger.Send(new TMessage(), key);
public static async Task<TResponse> SendAsync<TMessage, TResponse>(this IMessenger messenger)
where TMessage : class, new() => await messenger.Send(new AsyncResponseEventArgs<TMessage, TResponse> { Message = new TMessage() });
where TMessage : class, new() =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, TResponse> { Message = new TMessage() });
public static async Task<TResponse> SendAsync<TMessage, TResponse>(this IMessenger messenger,
TMessage message) where TMessage : class =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, TResponse> { Message = message });
}