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
配置移动到您正在配置的位置。
我正在为 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
配置移动到您正在配置的位置。