コード例 #1
0
        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());
        }
コード例 #2
0
        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));
        }