C#中使用Mapster

Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射。

多个映射框架的性能对比:

第一步安装Mapster

使用方法

csharp 复制代码
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"

全局配置映射

如果我们每次在使用映射时都需要对一些字段进行特殊处理,那么会在每个使用的地方编写映射。

我们可以配置一个全局的通用映射关系,在程序启动时就定义映射关系。

首先编写一个配置文件

csharp 复制代码
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文件

csharp 复制代码
var builder = WebApplication.CreateBuilder(args);  
// 添加其他服务和中间件...  
 
// 配置Mapster映射  
MapsterProfile.Configure();  
 
var app = builder.Build();  
// 配置HTTP请求管道...  
app.Run();

然后在程序中如果想使用,可以直接

csharp 复制代码
// 创建源对象
        var source = new Test
        {
            name = "张三",
            sex = "男",
            interest =new string[]{"唱","跳","rap"}
        };
var test1Model= source.Adapt<Test1>();//一句话就可以搞定