C#中使用Mapster

59 篇文章 11 订阅
12 篇文章 0 订阅

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>();//一句话就可以搞定
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香煎三文鱼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值