AutoMapper 是一个对象-对象映射的库,可以帮助你简化两个对象之间的属性复制。它特别适用于将数据传输对象 (DTO) 映射到业务对象,或反之亦然。
性能方面,AutoMapper不如自己写构造函数手动映射,但是优势在于代码可读性和维护性
自定义映射
你可以在映射配置中自定义属性映射,例如:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Source, Destination>()
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.FullName));
}
}
CreateMap<Source, Destination>() 定义了从 Source 类型到 Destination 类型的映射关系。
ForMember 方法用于配置特定成员(属性或字段)的映射方式。(如果是子对象的子对象,需要用ForPath,比如 ForPath(dest=>dest.Name.FirstName,...))
ForMember 方法的参数
1、第一个参数:dest => dest.Name
这是一个 lambda 表达式,用于指定目标对象 (Destination) 中的成员(属性或字段),即你希望映射的目标属性。在这个例子中,它是 Destination 类中的 Name 属性。
2、第二个参数:opt => opt.MapFrom(src => src.FullName)
1)这是一个 lambda 表达式,用于配置映射选项 (opt 表示 options)。
2)opt.MapFrom(src => src.FullName) 指定了从源对象 (Source) 的哪个成员映射到目标对象的 Name 成员。在这个例子中,它是 Source 类中的 FullName 属性。
opt 是什么
opt 是 IMemberConfigurationExpression<Source, Destination, TMember> 类型的一个实例。这个接口定义了如何配置成员的映射。在 ForMember 方法中,opt 提供了各种配置选项,如 MapFrom(映射来源), Ignore(忽略映射), Condition(根据条件进行映射), NullSubstitute(为空时的替代值) 等。