Automapper AddAfterMapAction 不调用方法

Automapper AddAfterMapAction not calling method

我正在为 Automapper 配置文件映射使用全局配置。

public class StudentProfile : Profile
{
    public StudentProfile()
    {
        CreateMap<Student, StudentVM>()
            .ForMember(dest => dest.school, src => src.Ignore());
    }
}

映射器配置

public static class Configuration
{
    public static IMapper InitializeAutoMapper()
    {
        MapperConfiguration config = new MapperConfiguration(cfg =>
        {
            cfg.AddProfile(new StudentProfile());
        });

        config.AssertConfigurationIsValid();
        return config.CreateMapper();
    }
}

现在我正在添加 .AddAfterMapAction 使用 Expression.

static void Main(string[] args)
    {
        try
        {
            var mapper = Configuration.InitializeAutoMapper();

            foreach (var item in mapper.ConfigurationProvider.GetAllTypeMaps())
            {
                Expression<Action<int>> beforeMapAction = (x) => Test(x);
                item.AddAfterMapAction(beforeMapAction);
            }

            var dest = mapper.Map<Student, StudentVM>(StudentService.GetStudent());

            Console.ReadLine();
        }
        catch (Exception ex)
        {
        }
    }
    public static void Test(int x)
    {
        Console.WriteLine("X = {0}", x);
    }

当我使用此行进行映射时,它没有调用测试方法:var dest = mapper.Map<Student, StudentVM>(StudentService.GetStudent());

我是不是做错了什么。因为它应该在映射时调用测试方法。

实例化 MappingConfiguration 后无法修改地图。一旦构建了 TypeMap,就会创建执行计划并且无法更改。

您需要将该 AfterMap 配置移动到您正在配置的位置。