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>();//一句話就可以搞定