コード例 #1
0
ファイル: Container.cs プロジェクト: csf-dev/FlexDi
        /// <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));
        }
コード例 #2
0
        /// <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);
        }