protected virtual bool TryCreateProxy(object target, BindingDescription description, out ITargetProxy proxy)
        {
            proxy = null;
            foreach (PriorityFactoryPair pair in this.factories)
            {
                try
                {
                    var factory = pair.factory;
                    if (factory == null)
                    {
                        continue;
                    }

                    proxy = factory.CreateProxy(target, description);
                    if (proxy != null)
                    {
                        return(true);
                    }
                }
                catch (Exception e)
                {
                    if (log.IsWarnEnabled)
                    {
                        log.WarnFormat("Unable to bind:{0};exception:{1}", description.ToString(), e);
                    }
                }
            }

            return(false);
        }
        public ITargetProxy CreateProxy(object target, BindingDescription description)
        {
            ITargetProxy proxy = null;

            if (TryCreateProxy(target, description, out proxy))
            {
                return(proxy);
            }

            if (log.IsWarnEnabled)
            {
                log.WarnFormat("Unable to bind: not found {0} on {1}", description.TargetName, target.GetType().Name);
            }

            throw new BindingException("Unable to bind: \"{0}\"", description.ToString());
        }
示例#3
0
        public ITargetProxy CreateProxy(object target, BindingDescription description)
        {
            try
            {
                ITargetProxy proxy = null;
                if (TryCreateProxy(target, description, out proxy))
                {
                    return(proxy);
                }

                throw new NotSupportedException("Not found available proxy factory.");
            }
            catch (Exception e)
            {
                throw new ProxyException(e, "Unable to bind the \"{0}\".An exception occurred while creating a proxy for the \"{1}\" property of class \"{2}\".", description.ToString(), description.TargetName, target.GetType().Name);
            }
        }