在Automapper 7中,我使用以下代码来映射子属性:
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类中注入映射器对象
private readonly IMapper _mapper;
public MappingProfile(IMapper mapper)
{
_mapper = mapper;
}然后我使用_mapper对象而不是静态映射器
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属性始终为空。我做错了什么?
发布于 2020-07-20 17:44:39
你可以试试这样的东西
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)))https://stackoverflow.com/questions/58097988
复制相似问题