我发誓我以前做过,但我现在似乎无法让它工作。基本上我得到的EndUser
包含Site
,我想将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);
答案 0 :(得分:0)
您要将Location
映射到SiteInfo
还是LocationInfo
?您在dest
- &gt;中映射到的EndUser
属性是什么? SiteInfo
映射? 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));