首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Automapper 9:映射子属性

Automapper 9:映射子属性
EN

Stack Overflow用户
提问于 2019-09-25 20:06:18
回答 1查看 857关注 0票数 2

在Automapper 7中,我使用以下代码来映射子属性:

代码语言:javascript
复制
    Mapper.CreateMap<DomainClass, Child>();
    Mapper.CreateMap<DomainClass, Parent>()
      .ForMember(d => d.Id, opt => opt.MapFrom(s => s.Id))
      .ForMember(d => d.A, opt => opt.MapFrom(s => s.A))
      .ForMember(d => d.Child, 
                 opt => opt.MapFrom(s => Mapper.Map<DomainClass, Child>(s)))

现在,对于Automapper 9,我不能使用静态Mapper对象

我使用DI在MappingProfile类中注入映射器对象

代码语言:javascript
复制
        private readonly IMapper _mapper;

        public MappingProfile(IMapper mapper)
        {
            _mapper = mapper;
        }

然后我使用_mapper对象而不是静态映射器

代码语言:javascript
复制
 Mapper.CreateMap<DomainClass, Child>();
 Mapper.CreateMap<DomainClass, Parent>()
   .ForMember(d => d.Id, opt => opt.MapFrom(s => s.Id))
   .ForMember(d => d.A, opt => opt.MapFrom(s => s.A))
   .ForMember(d => d.Child, 
              opt => opt.MapFrom(s => _mapper.Map<DomainClass, Child>(s)))

但它不起作用。Child属性始终为空。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-07-20 17:44:39

你可以试试这样的东西

代码语言:javascript
复制
 static Mapper InitializeAutomapper()
    {
        var config = new MapperConfiguration(cfg => {
            cfg.CreateMap<DomainClass, Child>();
        });
        var mapper = new Mapper(config);
        return mapper;
    }
 var mapper = InitializeAutomapper();
Mapper.CreateMap<DomainClass, Child>();
Mapper.CreateMap<DomainClass, Parent>()
.ForMember(d => d.Id, opt => opt.MapFrom(s => s.Id))
.ForMember(d => d.A, opt => opt.MapFrom(s => s.A))
.ForMember(d => d.Child, 
              opt => opt.MapFrom(s => mapper.Map<DomainClass, Child>(s)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58097988

复制
相关文章

相似问题

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