我发誓我以前做过,但现在我似乎无法让它工作。 基本上我得到一个包含Site
的EndUser
,我想将该Site
映射到SiteInfo
对象。
这是我的地图配置:
Mapper.CreateMap<Site, SiteInfo>()
.ForMember(dest => dest.SiteID, opt => opt.MapFrom( src => src.ID))
.ForMember(dest => dest.CompanyID, opt => opt.MapFrom(src => src.Company.ID));
Mapper.CreateMap<EndUser, SiteInfo>()
.ForMember( dest => dest, opt => opt.MapFrom(src => src.Site ));
所以EndUser.Site
应该能够映射到SiteInfo
.我可以通过打电话在外面做到这一点 Mapper.Map<SiteInfo>(EndUser.Site)
.我认为从最终用户直接映射到位置信息只是更干净的语法。
那么如何直接从EndUser
映射到SiteInfo
呢? 基本上这是我想写的代码:
var user = mcp.Users.GetEndUser(userAddress.Address);
var siteInfo = Mapper.Map<SiteInfo>(user);
目前,我正在通过像这样从EndUser.Site
映射来解决此问题:
var user = GetEndUser(emailAddress);
var siteInfo = user == null
? null as SiteInfo
: Mapper.Map<SiteInfo>(user.Site);
你想Location
映射到SiteInfo
还是LocationInfo
?您在EndUser
-> SiteInfo
映射中映射到的dest
属性是什么?SiteInfo
是否同时包含Location
和EndUser
属性的组合?
没有这些信息,我只是猜测,但你想做这样的事情吗?
var rc = Mapper.Map<SiteInfo>(endUser);
rc = Mapper.Map(endUser.Location, rc);
更新
所以如果我理解正确,你是在追求这样的映射吗?
Mapper.CreateMap<EndUser, SiteInfo>()
.ForMember(dest => dest.SiteID, opt => opt.MapFrom( src => src.Site.ID))
.ForMember(dest => dest.CompanyID, opt => opt.MapFrom(src => src.Site.Company.ID));