Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射。
多个映射框架的性能对比:
第一步安装Mapster
使用方法
public class Test
{
public string name { get; set; }
public string sex { get; set; }
public string[] interest { get; set; }
}
public class Test1
{
public string name { get; set; }
public string sex { get; set; }
public string address { get; set; }
public string interest { get; set; }
}
// 创建源对象
var source = new Test
{
name = "张三",
sex = "男",
interest =new string[]{"唱","跳","rap"}
};
//这里我们可以做一些自定义映射 把数组类型字段处理成字符串
TypeAdapterConfig<Test, Test1>.NewConfig()
.Map(m => m.interest , b => string.Join(',', b.interest )); // 自定义映射规则
// 执行映射
var test1Model= source.Adapt<Test1>();
// 输出结果
Console.WriteLine(test1Model.name ); // 输出:"张三"
Console.WriteLine(test1Model.interest ); // 输出:"唱,跳,rap"
全局配置映射
如果我们每次在使用映射时都需要对一些字段进行特殊处理,那么会在每个使用的地方编写映射。
我们可以配置一个全局的通用映射关系,在程序启动时就定义映射关系。
首先编写一个配置文件
public class MapsterProfile
{
public static void Configure()
{
// 设置全局配置
TypeAdapterConfig.GlobalSettings.Default
.NameMatchingStrategy(NameMatchingStrategy.Flexible) // 设置属性名称匹配策略为灵活匹配
.PreserveReference(true); // 保留引用关系
//特定类型之间的映射配置
TypeAdapterConfig<Test, Test1>.NewConfig()
.Map(m => m.interest , b => string.Join(',', b.interest )); // 自定义映射规则
// 你可以继续为其他类型对添加配置...
}
}
然后在程序启动时调用配置方法
Program.cs文件
var builder = WebApplication.CreateBuilder(args);
// 添加其他服务和中间件...
// 配置Mapster映射
MapsterProfile.Configure();
var app = builder.Build();
// 配置HTTP请求管道...
app.Run();
然后在程序中如果想使用,可以直接
// 创建源对象
var source = new Test
{
name = "张三",
sex = "男",
interest =new string[]{"唱","跳","rap"}
};
var test1Model= source.Adapt<Test1>();//一句话就可以搞定