AutoMapper
是一个 .NET 下常用的对象映射库,主要用于简化不同对象之间的数据转换。它可以自动将一个对象的属性值映射到另一个对象,常用于 DTO(数据传输对象)和实体对象之间的转换,减少手动赋值代码,提高开发效率。
主要特点:
- 自动属性映射(支持同名属性自动匹配)
- 支持复杂类型、集合、嵌套对象映射
- 可自定义映射规则
- 易于集成到 ASP.NET Core、依赖注入等场景
下面是一个属性数量和名称都不同,并且显式设置映射规则的 AutoMapper
示例:
csharp
public class User
{
public int UserId { get; set; }
public string FullName { get; set; }
public string EmailAddress { get; set; }
}
public class UserDto
{
public int Id { get; set; }
public string Name { get; set; }
}
映射配置及使用:
csharp
using AutoMapper;
class Program
{
static void Main()
{
// 显式设置映射规则
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, UserDto>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.UserId))
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.FullName));
// EmailAddress 没有映射到 UserDto
});
var mapper = config.CreateMapper();
var user = new User
{
UserId = 100,
FullName = "李四",
EmailAddress = "lisi@example.com"
};
var userDto = mapper.Map<UserDto>(user);
Console.WriteLine($"Id: {userDto.Id}, Name: {userDto.Name}");
}
}
说明:
User
有三个属性,UserDto
只有两个,且属性名不同。- 显式用
.ForMember
指定了属性映射关系。 - 未映射的属性(如
EmailAddress
)不会出现在目标对象中。
这样可以灵活应对属性不一致的场景。