private IKeyedEnumerable <string, MetaMember> GetMembers(Type type) { MetaMemberCollection members = new MetaMemberCollection(); foreach (MemberInfo member in type.GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { ColumnAttribute column = (ColumnAttribute)Attribute .GetCustomAttribute(member, typeof(ColumnAttribute)); AssociationAttribute association = (AssociationAttribute)Attribute .GetCustomAttribute(member, typeof(AssociationAttribute)); if (column != null) { if (association != null) { throw Error.InvalidMemberAttributes(member); } members.Add(new AttributedMetaColumn(this, member, column)); } if (association != null) { members.Add(new AttributedMetaAssociation(this, member, association)); } } return(members); }
public AttributedMetaAssociation (MetaType declaringType, MemberInfo member, AssociationAttribute attribute) : base(declaringType, member) { Precondition.Require(attribute, () => Error.ArgumentNull("attribute")); _isNullable = attribute.CanBeNull; _isProjected = attribute.Projected; _isPersistent = attribute.Persistent; _thisKey = attribute.ThisKey ?? ((_isPersistent) ? member.Name : null); _otherKey = attribute.OtherKey; _prefix = attribute.Prefix ?? String.Concat(member.Name, "."); }
public AttributedMetaAssociation(MetaType declaringType, MemberInfo member, AssociationAttribute attribute) : base(declaringType, member) { Precondition.Require(attribute, () => Error.ArgumentNull("attribute")); _isNullable = attribute.CanBeNull; _isProjected = attribute.Projected; _isPersistent = attribute.Persistent; _thisKey = attribute.ThisKey ?? ((_isPersistent) ? member.Name : null); _otherKey = attribute.OtherKey; _prefix = attribute.Prefix ?? String.Concat(member.Name, "."); }