[英]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.