public IObjectBinder GetBinder(IMember member)
        {
            var abstractObjectBinderAttribute =
                member.FindAttribute <BinderAttribute>() ?? member.Type.FindAttribute <BinderAttribute>();

            if (abstractObjectBinderAttribute != null)
            {
                return(abstractObjectBinderAttribute.GetBinder(member));
            }



            IMethod binderMethod = member.GetMethod("GetBinder");

            if (binderMethod != null)
            {
                try
                {
                    return(binderMethod.Invoke(null, TypeSystem, member).OfType <IObjectBinder>().Single());
                }
                catch (Exception e)
                {
                    LogGetBinderMethodCouldntBeRun(e);
                }
            }

            return(new KeyedValuesBinder(member.Type, member.Name));
        }
        public IObjectBinder GetBinder(IMember member)
        {
            var abstractObjectBinderAttribute = member.FindAttribute<BinderAttribute>() ?? member.Type.FindAttribute<BinderAttribute>();

            if (abstractObjectBinderAttribute != null)
            {
                return abstractObjectBinderAttribute.GetBinder(member);
            }

            IMethod binderMethod = member.GetMethod("GetBinder");
            
            if (binderMethod != null)
            {
                try
                {
                    return binderMethod.Invoke(null, this.TypeSystem, member).OfType<IObjectBinder>().Single();
                }
                catch (Exception e)
                {
                    this.LogGetBinderMethodCouldntBeRun(e);
                }
            }

            return new KeyedValuesBinder(member.Type, member.Name);
        }
Exemple #3
0
 public virtual T FindAttribute <T>() where T : class
 {
     return(_wrapped.FindAttribute <T>());
 }