Esempio n. 1
0
        /// <summary>
        /// 构建信息
        /// </summary>
        /// <param name="rule">服务类型规则</param>
        /// <param name="scope">scope</param>
        /// <param name="context">构建行为在执行过程的上下文</param>
        /// <returns></returns>
        public object OptionalResolveRule(RegisterRule rule, ILifetimeScope scope, IResolveContext context)
        {
            if (rule.CanNotOptionalResolve != null)
            {
                throw new Exception(string.Format("can not resolve the {0}", rule.ServiceType.FullName), rule.CanNotOptionalResolve);
            }

            try
            {
                /*执行新的规则行为*/
                return(RegisterRuleBuilder.OptionalBuild(rule, this, this).Invoke(rule, this, scope, context));
            }
            catch (Exception ex)
            {
                rule.CanNotOptionalResolve = ex;
                throw new Exception(string.Format("can not resolve the {0}", rule.ServiceType.FullName), rule.CanNotOptionalResolve);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 构建信息
        /// </summary>
        /// <param name="rule">服务类型规则</param>
        /// <param name="scope">scope</param>
        /// <param name="context">构建行为在执行过程的上下文</param>
        /// <returns></returns>
        public object OptionalResolveRule(RegisterRule rule, ILifetimeScope scope, IResolveContext context)
        {
            if (rule.CanNotOptionalResolve != null)
            {
                throw new Exception(string.Format("can not resolve the {0}", rule.ServiceType.FullName), rule.CanNotOptionalResolve);
            }

            try
            {
                /*执行新的规则行为*/
                return(RegisterRuleBuilder.OptionalBuild(rule, this, this).Invoke(rule, this, scope, context));
            }
            catch (Exception ex)
            {
                var inner = ex.GetInnerException();
                rule.CanNotOptionalResolve = new Exception(inner.Message)
                {
                    Source = inner.Source, HelpLink = inner.HelpLink
                };
                throw new Exception(string.Format("can not resolve the {0}", rule.ServiceType.FullName), rule.CanNotOptionalResolve);
            }
        }