首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用AutoMapper .ForMember?

如何使用AutoMapper .ForMember?
EN

Stack Overflow用户
提问于 2011-08-09 00:06:00
回答 6查看 105.9K关注 0票数 95

我正在尝试设置AutoMapper以将实体转换为DTO。我知道我应该在Mapper.CreateMap<Entity, DTO>()之后使用.ForMember()来设置自定义映射,但这似乎不是一个可用的方法。

编辑澄清:我不是在寻找我已经读过的文档的链接,也不是基本语法的解释。我使用的是答案和文档中描述的正确语法,例如:

代码语言:javascript
复制
Mapper.CreateMap<EFAddress, Address>()
      .ForMember(dest => dest.Code, opt => opt.MapFrom(src => src.Name));

如果我在CreateMap<>中有一个无效的类型名,我可以看到"ForMember“是一个有效的方法,将鼠标悬停在上面会像我通常期望的那样显示方法签名。但是一旦我给它两个有效的类型,ForMember就会说它不能解析这个符号,就好像这个方法不可用一样。

在泛型类上有什么我不满足的约束吗?

谢谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-12 22:31:16

最后,我认为这被证明是与ReSharper的某种不兼容。

ReSharper似乎导致Automapper代码显示不正确,但工作正常(尽管它显示为红色并带有错误消息)。卸载ReSharper完全解决了此问题。

票数 17
EN

Stack Overflow用户

发布于 2011-08-09 00:08:35

尝试以下语法:

代码语言:javascript
复制
Mapper
    .CreateMap<Entity, EntityDto>()
    .ForMember(
        dest => dest.SomeDestinationProperty,
        opt => opt.MapFrom(src => src.SomeSourceProperty)
    );

或者如果源属性和目标属性具有相同的名称,只需:

代码语言:javascript
复制
Mapper.CreateMap<Entity, EntityDto>();

有关更多详细信息和其他映射场景,请查看documentation的相关部分。

票数 146
EN

Stack Overflow用户

发布于 2011-08-09 00:09:21

示例实现如下所示:

代码语言:javascript
复制
Mapper.CreateMap<Game, GameViewModel>()
  .ForMember(m => m.GameType, opt => opt.MapFrom(src => src.Type))

我们需要映射这个属性,因为GameViewModel和Game的属性名称是不同的-如果它们是相同类型的,那么它将不需要ForMember

ForMember的另一个用途是忽略映射

代码语言:javascript
复制
Mapper.CreateMap<Game, GameViewModel>()
    .ForMember(dest => dest.Prize, opt => opt.Ignore());
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6985000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档