/// <summary> /// Given the type in the target space and the member name in the source space, /// get the corresponding member in the target space /// For e.g. consider a Conceptual Type Foo with a member bar and a CLR type /// XFoo with a member YBar. If one has a reference to Foo one can /// invoke GetMember(Foo,"YBar") to retrieve the member metadata for bar /// </summary> /// <param name="type">The type in the target perspective</param> /// <param name="memberName">the name of the member in the source perspective</param> /// <param name="ignoreCase">true for case-insensitive lookup</param> /// <param name="outMember">returns the edmMember if a match is found</param> /// <returns>true if a match is found, otherwise false</returns> internal override bool TryGetMember(StructuralType type, String memberName, bool ignoreCase, out EdmMember outMember) { outMember = null; Map map = null; if (this.MetadataWorkspace.TryGetMap(type, DataSpace.OCSpace, out map)) { ObjectTypeMapping objectTypeMap = map as ObjectTypeMapping; if (objectTypeMap != null) { ObjectMemberMapping objPropertyMapping = objectTypeMap.GetMemberMapForClrMember(memberName, ignoreCase); if (null != objPropertyMapping) { outMember = objPropertyMapping.EdmMember; return(true); } } } return(false); }
internal override bool TryGetMember( StructuralType type, string memberName, bool ignoreCase, out EdmMember outMember) { outMember = (EdmMember)null; MappingBase map = (MappingBase)null; if (this.MetadataWorkspace.TryGetMap((GlobalItem)type, DataSpace.OCSpace, out map)) { ObjectTypeMapping objectTypeMapping = map as ObjectTypeMapping; if (objectTypeMapping != null) { ObjectMemberMapping memberMapForClrMember = objectTypeMapping.GetMemberMapForClrMember(memberName, ignoreCase); if (memberMapForClrMember != null) { outMember = memberMapForClrMember.EdmMember; return(true); } } } return(false); }