Add some WinUI work
This commit is contained in:
@@ -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));
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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>();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user