AutoMapper是一种流行的对象到对象映射库,可用于映射属于不同类型的对象。例如,您可能需要将应用程序中的DTO(数据传输对象)映射到模型对象。
AutoMapper省去了手动映射此类不兼容类型的一个或多个属性的繁琐工作。
一、在Visual Studio中创建一个项目
笔者采用控制台应用程序。
然后安装AutoMapper。可以在NuGet软件包管理器窗口安装AutoMapper
二、使用AutoMapper创建映射
诸如AutoMapper之类的对象到对象映射器将一种类型的输入对象转换为另一种类型的输出对象。考虑以下两个类。
//实体
public class AuthorModel
{
public int ID { get; set; }
public string AuthorName { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
}
//映射实体DTO
public class AuthorDTO
{
public int ID { get; set; }
public string AuthorName { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
}
配置类型AuthorModel和AuthorDTO之间创建映射关系。
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<AuthorModel, AuthorDTO>();
});
然后,执行类型之间的映射就像下面的代码所示一样简单。
IMapper iMapper = config.CreateMapper();
var model = new AuthorModel();
var MapAuthor = iMapper.Map<AuthorModel, AuthorDTO>(model);//映射实体
三、使用AutoMapper完整示例
现在让我们处理一些数据。请参考以下代码,该代码将一些数据存储到源对象中,然后在完成映射后在目标对象中显示属性值。
static void Main(string[] args)
{
//注册配置
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<AuthorModel, AuthorDTO>();
});
//创建映射
IMapper iMapper = config.CreateMapper();
var model = new AuthorModel();
model.ID = 1;
model.AuthorName = "LaoPaoEr";
model.Sex = "男";
model.Age = 23;
model.Phone = "18276250000";
model.Address = "中国上海市浦东新区XXXXX";
var MapAuthor = iMapper.Map<AuthorModel, AuthorDTO>(model);//映射实体
Console.WriteLine(MapAuthor);
Console.WriteLine($"Author Name: {model.AuthorName}");
Console.ReadLine();
}
当您执行上述代码时,将显示存储在目标对象中的作者姓名,使用AutoMapper成功映射了对象!
更多AutoMapper用法请转到http://automapper.org/