以某种方式允许这样的事情吗?
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);
关于c# - 是否可以在 AfterMap 中调用 Mapper.Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39187208/