diff --git a/src/Http/Http.Abstractions/src/Extensions/UseMiddlewareExtensions.cs b/src/Http/Http.Abstractions/src/Extensions/UseMiddlewareExtensions.cs index 16140612435b..f6d4bdc1b884 100644 --- a/src/Http/Http.Abstractions/src/Extensions/UseMiddlewareExtensions.cs +++ b/src/Http/Http.Abstractions/src/Extensions/UseMiddlewareExtensions.cs @@ -214,7 +214,8 @@ public RequestDelegate CreateMiddleware(RequestDelegate next) var precomputedKeys = new object?[parameters.Length]; for (var i = 1; i < parameters.Length; i++) { - var hasServiceKey = TryGetServiceKey(parameters[i], out object? key); + _ = TryGetServiceKey(parameters[i], out object? key); + precomputedKeys[i] = key; } @@ -235,24 +236,11 @@ public RequestDelegate CreateMiddleware(RequestDelegate next) }; } - private static bool TryGetServiceKey(ParameterInfo parameterInfo, out object? key) + private static bool TryGetServiceKey(ParameterInfo parameterInfo, [NotNullWhen(true)] out object? key) { - if (parameterInfo.CustomAttributes != null) - { - foreach (var attribute in parameterInfo.GetCustomAttributes(true)) - { - if (attribute is FromKeyedServicesAttribute keyed) - { - key = keyed.Key; - - return true; - } - } - } - - key = null; + key = parameterInfo.GetCustomAttribute(false)?.Key; - return false; + return key != null; } private static UnaryExpression GetMethodArgument(ParameterInfo parameter, ParameterExpression providerArg, Type parameterType, Type? declaringType)