示例#1
0
        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();
                    }
                }
            }
        }
示例#2
0
 protected MapperBase(Type fromType, Type toType)
 {
     Key   = fromType.FullName + "->" + toType.FullName;
     _Info = new MapperInfo
     {
         From  = fromType
         , To  = toType
         , Key = this.Key
     };
 }
示例#3
0
 protected MapperBase(Type fromType, Type toType)
 {
     Key = fromType.FullName + "->" + toType.FullName;
     _Info = new MapperInfo
     {
         From = fromType
         ,To = toType
         ,Key = this.Key
     };
 }
示例#4
0
        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();
                    }
                }
            }
        }