可以打电话给Mapper吗?在AfterMap内部映射
本文关键字:AfterMap 内部 映射 打电话 Mapper | 更新日期: 2023-09-27 18:04:15
这样的事情是允许的吗?
CreateMap<UserViewModel, User>()
.ForMember(u => u.Password, o => o.Ignore())
.AfterMap((src, dest) => {
...
var entity = Mapper.Map<Entity>(src.SomeProperty);
...
});
不适合我,它说映射试图使用AfterMap内部不存在
我注意到您正在使用映射内的静态AutoMapper
类,但是您是否也使用映射外的静态实例,并且它是否为您的Entity
类配置了映射?
下面的工作,请注意,context.Mapper
调用确保相同的AutoMapper实例被用于调用Map
和随后的AfterMap
方法。
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<UserViewModel, User>()
.AfterMap((source, destination, context) =>
{
var entity = context.Mapper.Map<Entity>(source.SomeProperty);
});
cfg.CreateMap<EntityViewModel, Entity>();
});
var mapper = config.CreateMapper();
var viewModel = new UserViewModel
{
Name = "Test User",
SomeProperty = new EntityViewModel
{
Value = "Sub Class"
}
};
var user = mapper.Map<User>(viewModel);