Exemplo n.º 1
0
        /// <summary>
        /// Resolves the given resolution request, using the given service registration.
        /// </summary>
        /// <param name="request">Request.</param>
        /// <param name="registration">Registration.</param>
        protected virtual ResolutionResult Resolve(ResolutionRequest request, IServiceRegistration registration)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            AssertIsValidRequest(request);

            if (registration == null)
            {
                return(ResolutionResult.Failure(request.ResolutionPath));
            }

            var factory = registration.GetFactoryAdapter(request);

            if (factory == null)
            {
                return(ResolutionResult.Failure(request.ResolutionPath));
            }

            var resolved = instanceCreator.CreateFromFactory(factory, request.ResolutionPath, registration);

            InvokeServiceResolved(registration, resolved);
            return(ResolutionResult.Success(request.ResolutionPath, resolved));
        }