簡體   English   中英

Automapper 9:map 子屬性

[英]Automapper 9: map child property

使用 Automapper 7,我將此代碼用於 map 子屬性:

    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 我無法使用 static 映射器 object
我使用 DI 在 MappingProfile class 中注入映射器 object

        private readonly IMapper _mapper;

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

然后我使用 _mapper object 而不是 static 映射器

 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 屬性始終為 null。 我究竟做錯了什么?

你可以嘗試類似的東西

 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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM