1.Automapper解说
Automapper是一个对象与对象的关系映射库,目的就是帮助你实现源类型到目标类型的对象之间的映射
2.Automapper的封装
A.中间件中添加注册
点击查看代码
//Automapper映射
builder.Services.AddAutoMapper(typeof(AutoMapperConfigs));
点击查看代码
//定义了一个特性类 命名方式:特性名+Attribute
//特性:加注释
//步骤1:定义特性类
//步骤2:构建自定义特性
[AttributeUsage(AttributeTargets.Class)]//指定应用目标:类
public class AutoMapperAttribute : Attribute
{
public Type Sourse { get; set; }
public Type Des { get; set; }
/// <summary>
/// 获取源和目标类型
/// </summary>
/// <param name="source"></param>
/// <param name="des"></param>
public AutoMapperAttribute(Type source, Type des)
{
Sourse = source;
Des = des;
}
}
点击查看代码
/// <summary>
/// Dto的映射配置
/// </summary>
public class AutoMapperConfigs: Profile
{
public AutoMapperConfigs()
{
#region 非封装下:每队源类和目标类需要一一添加映射关系,扩展性差
//用户
//CreateMap<User, UserRes>();
#endregion
#region 封装映射实现:反射+特性
//获取程序集
var assembly =Assembly.Load("Model");
var list = new List<Type>();
//遍历程序集下的类型
foreach(var item in assembly.GetTypes())
{
//判断该类型是否标记AutoMapperAttribute特性
if (item.IsDefined(typeof(AutoMapperAttribute), true))
{
var type=item.GetCustomAttribute<AutoMapperAttribute>();
Type source = type.Sourse;
Type des = type.Des;
//源数据与目标数据的映射
CreateMap(source, des);
}
}
#endregion
}
}