日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#对象映射器之Mapster

發布時間:2023/12/4 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#对象映射器之Mapster 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

Mapster是一個快,小巧,功能強大的對象映射.Net框架

例子

我有兩個Model類且他們的屬性一致,我們將 SourceObjectTest賦值給DestObjectTest該怎么做?

SourceObjectTest?sourceObject?=?new?SourceObjectTest(); sourceObject.Name?=?"張三"; sourceObject.Age?=?new?List<int>?{?20,?13,?26?}; sourceObject.Address?=?"XX省XX市XX縣"; sourceObject.Sex?=?"男";

常規做法

public?void?Routine(SourceObjectTest?sourceObject) { DestObjectTest?destObject?=?new?DestObjectTest();destObject.Name?=?sourceObject.Name; destObject.Sex?=?sourceObject.Sex; destObject.Address?=?sourceObject.Address; destObject.Age?=?sourceObject.Age; }

這種類型的代碼寫起來相當枯燥乏味且累那么我們可不可以用第三方的庫來解決這種問題呢,那肯定是可以的,像AutoMapper和Mapster就是解決這種問題的,而我為什么選擇Mapster,主要還是Mapster性能更好!

安裝Mapster包

使用Mapster

基本映射之映射到新對象

public?void?BasicMappingNewObject(SourceObjectTest?sourceObject){DestObjectTest?destObject=?sourceObject.Adapt<DestObjectTest>();}

基本映射之映射到現有對象

public?void?BasicMappingExistObject(SourceObjectTest?sourceObject){DestObjectTest?destObject?=?new?DestObjectTest();destObject.Name?=?"李四";destObject.Age?=?new?List<int>?{?20?};destObject.Address?=?"中國XX省XX市XX縣";destObject.Sex?=?"女";????destObject?=?sourceObject.Adapt(destObject);}

自定義映射

當我們的映射對象的屬性與源對象的屬性不一致時我們就可以使用!eg:SourceObjectTest的name屬性和DifferentDestObjectTest的UserName是一個意思,只是創建Model類的時候取得名字不一樣,這時候基本映射映射不了UserName字段,那我們就要使用自定義映射了!

一:直接在 TypeAdapterConfig 配置對象的映射關系

public?void?BasicMappingExtend(SourceObjectTest?sourceObject) { var?config?=?new?TypeAdapterConfig(); config.ForType<SourceObjectTest,?DifferentDestObjectTest>().Map(dest?=>?dest.UserName,?src?=>?src.Name).Map(dest?=>?dest.Address,?src?=>?src.Name?+?src.Address); var?mapper?=?new?Mapper(config);DifferentDestObjectTest?differentDestObjectTest?=?mapper.Map<DifferentDestObjectTest>(sourceObject); }

二:使用接口的方式

public?class?DifferentDestObjectTestRegister?:?IRegister{public?void?Register(TypeAdapterConfig?config){config.ForType<SourceObjectTest,?DifferentDestObjectTest>().Map(dest?=>?dest.UserName,?src?=>?src.Name).Map(dest?=>?dest.Address,?src?=>?src.Name?+?src.Address);}}public?void?BasicMappingExtend(SourceObjectTest?sourceObject){var?config?=?new?TypeAdapterConfig();config.Scan(Assembly.GetExecutingAssembly());var?mapper?=?new?Mapper(config);DifferentDestObjectTest?differentDestObjectTest?=?mapper.Map<DifferentDestObjectTest>(sourceObject);}

三:使用映射配置

public?void?MappingConfig(SourceObjectTest?sourceObject){TypeAdapterConfig<SourceObjectTest,?DifferentDestObjectTest>.NewConfig().Map(dest?=>?dest.UserName,src?=>?src.Name);DifferentDestObjectTest?differentDestObjectTest?=?TypeAdapter.Adapt<SourceObjectTest,?DifferentDestObjectTest>(sourceObject);}

當然還有其它功能,可前往官網!-?傳送門!

最后大家如果喜歡我的文章,還麻煩給個關注并點個贊, 希望net生態圈越來越好!

總結

以上是生活随笔為你收集整理的C#对象映射器之Mapster的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。