/// <summary> /// Attempts to resolve a component, as specified by a <see cref="T:CSF.FlexDi.Resolution.ResolutionRequest" /> instance. /// The result indicates whether resolution was successful or not, and if it is, contains a reference to the resolved /// component. /// </summary> /// <returns>A resolution result instance.</returns> /// <param name="request">A resolution request specifying what is to be resolved.</param> public ResolutionResult TryResolve(ResolutionRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } return(resolver.Resolve(request)); }
/// <summary> /// Resolves a parameter for a <see cref="IFactoryAdapter"/>. /// </summary> /// <returns>The resolved parameter value.</returns> /// <param name="parameter">The parameter.</param> /// <param name="path">The resolution path.</param> /// <param name="registration">The registration for the service currently being resolved.</param> protected virtual object ResolveParameter(ParameterInfo parameter, ResolutionPath path, IServiceRegistration registration) { var request = ConvertToResolutionRequest(parameter, path, registration); var result = resolver.Resolve(request); if (!result.IsSuccess) { var message = String.Format(Resources.ExceptionFormats.FailedToResolveParameter, parameter.ParameterType.FullName, parameter.Name); throw new CannotResolveParameterException(message) { ResolutionPath = path, }; } return(result.ResolvedObject); }