private bool TryBuildResolutionConstructor( ConstructorInformation constructor, ResolutionContext resolutionContext, IContainerContext containerContext, IEnumerable <InjectionParameter> injectionParameters, out TypeInformation failedParameter, out Expression[] parameterExpressions, bool skipUknownResolution = false) { var paramLength = constructor.Parameters.Length; parameterExpressions = new Expression[paramLength]; failedParameter = null; for (var i = 0; i < paramLength; i++) { var parameter = constructor.Parameters[i]; parameterExpressions[i] = containerContext.ResolutionStrategy.BuildResolutionExpression(containerContext, resolutionContext, parameter, injectionParameters, skipUknownResolution); if (parameterExpressions[i] == null) { failedParameter = parameter; return(false); } } return(true); }
public ResolutionConstructor CreateResolutionConstructor(IContainerContext containerContext, IServiceRegistration serviceRegistration, ResolutionContext resolutionContext, ConstructorInformation constructor) { var paramLength = constructor.Parameters.Length; var parameterExpressions = new Expression[paramLength]; for (var i = 0; i < paramLength; i++) { var parameter = constructor.Parameters[i]; var expression = containerContext.ResolutionStrategy.BuildResolutionExpression(containerContext, resolutionContext, parameter, serviceRegistration.RegistrationContext.InjectionParameters); parameterExpressions[i] = expression ?? throw new ResolutionFailedException(serviceRegistration.ImplementationType, $"Constructor {constructor.Constructor}, unresolvable parameter: ({parameter.Type}){parameter.ParameterName}"); } return(new ResolutionConstructor { Constructor = constructor.Constructor, Parameters = parameterExpressions }); }