InvokeForEachMessageAsync( IReadOnlyCollection <object> messages, SubscribedMethod subscribedMethod, object?[] arguments, ISingleMessageArgumentResolver singleResolver, bool executeAsync) { messages = FilterMessagesAndUnwrapEnvelopes(messages, subscribedMethod).ToList(); if (messages.Count == 0) { return(messages, null); } var target = subscribedMethod.ResolveTargetType(_serviceProvider); var returnValues = await messages .SelectAsync( message => { arguments[0] = singleResolver.GetValue(message); return(InvokeAsync(target, subscribedMethod.MethodInfo, arguments, executeAsync)); }) .ConfigureAwait(false); return(messages, returnValues.ToList()); }
private static Task <object?> InvokeWithSingleMessageAsync( object message, SubscribedMethod subscribedMethod, object?[] arguments, ISingleMessageArgumentResolver singleResolver, IServiceProvider serviceProvider, bool executeAsync) { message = UnwrapEnvelopeIfNeeded(message, subscribedMethod); var target = subscribedMethod.ResolveTargetType(serviceProvider); arguments[0] = singleResolver.GetValue(message); return(subscribedMethod.MethodInfo.InvokeWithActivityAsync(target, arguments, executeAsync)); }