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); }
public virtual T FindAttribute <T>() where T : class { return(_wrapped.FindAttribute <T>()); }