jk's notes
  • 投影 Projection

投影 Projection

投影也是一种转换类型的方法. 按照文档的描述, 它是转换, 而非扁平化 (flattening).

jk: 是不是说 Map 就是扁平化? 这个扁平化不是很理解...

不需要配置, AutoMapper 使用扁平化的目标类型, 来匹配源类型的命名结构. 在命名无法适配的情况下, 如果需要将源类型投影到目标类型上, 那么就需要自定义成员映射.

例如:

image-20240102091510838

由于属性名无法完全匹配, 就需要自定义匹配规则:

// 配置
var conf = new MapperConfiguration(cfg => {
  cfg.CreateMap<CalendarEvent, CalendarEventForm>()
    .ForMember(dest => dest.EventDate, opt => opt.MapFrom(src => src.Date.Date))
    .ForMember(dest => dest.EventHour, opt => opt.MapFrom(src => src.Date.Hour))
    .ForMember(dest => dest.EventMinute, opt => opt.MapFrom(src => src.Date.Minute));
});

image-20240102092702297

Last Updated:
Contributors: jk