This commit is contained in:
Dan Clark
2024-11-23 21:41:59 +00:00
parent e809c22cb7
commit 911ed375b4
17 changed files with 311 additions and 18 deletions
@@ -9,7 +9,7 @@ public class AsyncHandlerInitialization<TMessage, TResponse, THandler>(IServiceP
{
public void Initialize()
{
if (!StrongReferenceMessenger.Default.IsRegistered<ResponseEventArgs<TMessage, TResponse>>(provider))
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, TResponse>>(provider))
{
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>>(provider,
(provider, args) =>
@@ -29,7 +29,7 @@ public class AsyncHandlerInitialization<TMessage, THandler>(IServiceProvider pro
{
public void Initialize()
{
if (!StrongReferenceMessenger.Default.IsRegistered<TMessage>(provider))
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, Unit>>(provider))
{
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>>(provider,
(provider, args) =>
@@ -9,14 +9,15 @@ public class AsyncHandlerKeyedInitialization<TMessage, THandler>(string key, ISe
{
public void Initialize()
{
if (!StrongReferenceMessenger.Default.IsRegistered<TMessage, string>(provider, key))
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, Unit>, string>(provider, key))
{
StrongReferenceMessenger.Default.Register<IServiceProvider, TMessage, string>(provider, key,
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, Unit>, string>(provider, key,
(provider, args) =>
{
foreach (IAsyncHandler<TMessage> handler in provider.GetKeyedServices<IAsyncHandler<TMessage>>(key))
{
handler.Handle(args);
handler.Handle(args.Message, args.CancellationToken);
args.Reply(Unit.Value);
}
});
}
@@ -29,14 +30,14 @@ public class AsyncHandlerKeyedInitialization<TMessage, TResponse, THandler>(stri
{
public void Initialize()
{
if (!StrongReferenceMessenger.Default.IsRegistered<ResponseEventArgs<TMessage, TResponse>, string>(provider, key))
if (!StrongReferenceMessenger.Default.IsRegistered<AsyncResponseEventArgs<TMessage, TResponse>, string>(provider, key))
{
StrongReferenceMessenger.Default.Register<IServiceProvider, ResponseEventArgs<TMessage, TResponse>, string>(provider, key,
StrongReferenceMessenger.Default.Register<IServiceProvider, AsyncResponseEventArgs<TMessage, TResponse>, string>(provider, key,
(provider, args) =>
{
foreach (IAsyncHandler<TMessage, TResponse> handler in provider.GetKeyedServices<IAsyncHandler<TMessage, TResponse>>(key))
{
handler.Handle(args.Message);
args.Reply(handler.Handle(args.Message, args.CancellationToken));
}
});
}
+7
View File
@@ -0,0 +1,7 @@
namespace Toolkit.Foundation;
public enum ForwardChaining
{
And,
Or
}
+6
View File
@@ -0,0 +1,6 @@
namespace Toolkit.Foundation;
public interface ICondition
{
bool Evaluate();
}
@@ -0,0 +1,6 @@
namespace Toolkit.Foundation;
public interface IDisposableApplication
{
void Dispose();
}
@@ -31,15 +31,31 @@ public static class IMessengerExtensions
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,
string key) where TMessage : class, new() =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, TResponse> { Message = new TMessage() }, key);
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 });
public static async Task<TResponse> SendAsync<TMessage, TResponse>(this IMessenger messenger,
TMessage message, string key) where TMessage : class =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, TResponse> { Message = message }, key);
public static async Task SendAsync<TMessage>(this IMessenger messenger)
where TMessage : class, new() =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, Unit> { Message = new TMessage() });
public static async Task SendAsync<TMessage>(this IMessenger messenger,
string key) where TMessage : class, new() =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, Unit> { Message = new TMessage() }, key);
public static async Task SendAsync<TMessage>(this IMessenger messenger,
TMessage message) where TMessage : class =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, Unit> { Message = message });
public static async Task SendAsync<TMessage>(this IMessenger messenger,
TMessage message, string key) where TMessage : class =>
await messenger.Send(new AsyncResponseEventArgs<TMessage, Unit> { Message = message }, key);
}
+3 -5
View File
@@ -485,10 +485,10 @@ public abstract partial class ObservableCollection<TViewModel> :
protected override sealed void OnDeactivated()
{
Messenger.UnregisterAll(this);
Dispose();
Messenger.UnregisterAll(this);
Deactivated();
Dispose();
}
protected virtual void Activated()
@@ -525,8 +525,6 @@ public abstract partial class ObservableCollection<TViewModel> :
{
newSelection.IsSelected = true;
}
Messenger.Send(Selection.As(SelectedItem));
}
private void SourceCollectionChanged(object? sender,