public async Task Invoke(IncomingLogicalContext context, IBusForHandler bus, Func<Task> next)
{
var messageType = context.LogicalMessage.Instance.GetType();
var handlers = registry.GetHandlers(messageType);
foreach (var handler in handlers)
{
var messageHandler = new MessageHandler
{
Instance = handler,
Invocation = (handlerInstance, message) => registry.InvokeHandle(handlerInstance, message, bus)
};
context.Handler = messageHandler;
await next()
.ConfigureAwait(false);
if (context.HandlerInvocationAbortPending)
{
break;
}
}
}
}