可以在AfterMap中调用Mapper.Map吗?

时间:2016-08-28 01:19:29

标签: c# automapper

这样的事情是允许的吗?

‌

不适合我,它说试图在AfterMap内部使用的映射不存在。

1 个答案:

答案 0 :(得分:7)

我注意到你在映射中使用了静态AutoMapper类,但是你是否也使用了映射之外的静态实例,是否为你的Entity类配置了映射? / p>

以下内容有效,请注意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);