/// <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)); }