public MemberMapping(MapperInfo mapperInfo, MemberModel from, MemberModel to, string fromMemberPath) { _Info = mapperInfo; From = from; To = to; from.GetMember = from.Member.GetGetter(); to.SetMember = to.Member.GetSetter(); //FromMemberPath = fromMemberPath; Key = From.Type.FullName + "->" + To.Type.FullName; if (to.Type != from.Type && !to.Type.IsAssignableFrom(from.Type)) MemberMapper = CreateMapperMethod.MakeGenericMethod(from.Type,to.Type).Invoke(Mapper.Current,null) as IMapper; if (!string.IsNullOrEmpty(fromMemberPath)) { var members = fromMemberPath.Split('.'); var length = members.Length; if (length > 1) { MemberPaths = new Getter[length - 1]; var subObjectType = from.Type; for (int i = 1; i < length; i++) { var subMember = subObjectType .GetMember(members[i]) .FirstOrDefault(); if (subMember == null) break; MemberPaths[i - 1] = subMember.GetGetter(); subObjectType = subMember.GetMemberType(); } } } }
protected MapperBase(Type fromType, Type toType) { Key = fromType.FullName + "->" + toType.FullName; _Info = new MapperInfo { From = fromType , To = toType , Key = this.Key }; }
protected MapperBase(Type fromType, Type toType) { Key = fromType.FullName + "->" + toType.FullName; _Info = new MapperInfo { From = fromType ,To = toType ,Key = this.Key }; }
public MemberMapping(MapperInfo mapperInfo, MemberModel from, MemberModel to, string fromMemberPath) { _Info = mapperInfo; From = from; To = to; from.GetMember = from.Member.GetGetter(); to.SetMember = to.Member.GetSetter(); //FromMemberPath = fromMemberPath; Key = From.Type.FullName + "->" + To.Type.FullName; if (to.Type != from.Type && !to.Type.IsAssignableFrom(from.Type)) { MemberMapper = CreateMapperMethod.MakeGenericMethod(from.Type, to.Type).Invoke(Mapper.Current, null) as IMapper; } if (!string.IsNullOrEmpty(fromMemberPath)) { var members = fromMemberPath.Split('.'); var length = members.Length; if (length > 1) { MemberPaths = new Getter[length - 1]; var subObjectType = from.Type; for (int i = 1; i < length; i++) { var subMember = subObjectType .GetMember(members[i]) .FirstOrDefault(); if (subMember == null) { break; } MemberPaths[i - 1] = subMember.GetGetter(); subObjectType = subMember.GetMemberType(); } } } }