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