当前位置:网站首页>. Net automapper use
. Net automapper use
2022-07-07 22:18:00 【freelooppowter】
When decomposing complex software systems , One of the technologies most used by software designers is layering . Layered right has many advantages : Such as improving reusability 、 Low coupling , But it also has its shortcomings : For example, too many levels will affect performance 、 Sometimes it brings us cascading modifications .
It will bring cascading modifications. How to understand ? For example, when the demand changes, a data field displayed on the user interface should be added , You must add corresponding fields to the data , You must also make corresponding changes at each layer between the user interface and the database . There will be different data entity classes in different levels ( Some classes also include methods ), In order to realize data transmission between these entity classes, the transformation before the class must be carried out , This kind of conversion can complete the task by handwritten code for one-to-one conversion , Just like the picture below , And you have to work for the corresponding List<T> Class to write the corresponding conversion method , There is a simpler and more convenient solution for you ? That's what the title says AutoMapper, From the name, we can see that this is a tool for mapping .
Go straight to the code , First, define the entity class that needs to be converted , The second step is to inherit Profile Interface , To register .
using AutoMapper; namespace WindowsFormsApp1 { /// <summary> /// Imitate the data entity classes that need to be converted /// </summary> public class Source { public int SomeValue { get; set; } public string AnotherValue { get; set; } } /// <summary> /// Imitate the data entity classes that need to be converted /// </summary> public class Destination { public int SomeValue { get; set; } } /// <summary> /// adopt Profile register /// tell AutoMapper Which classes need to be converted , If A convert to B,B It should also be converted into A, Then you need to write two /// </summary> public class SourceProfile : Profile { public SourceProfile() { CreateMap<Source, Destination>(); CreateMap<Destination, Source>(); } } }
The third step is to Profile The mapping relationship written in the Chinese book is added to Mapper example , The routine needs to write a method to get the unique Mapper example ( The singleton pattern ), The mapping relationship is configured in the instance .
using AutoMapper; namespace WindowsFormsApp1 { public class AutoMapperConfigure { public static IMapper GetMapper() { var config = new MapperConfiguration(cfg => { // Scan the current assembly cfg.AddMaps(System.AppDomain.CurrentDomain.GetAssemblies()); }); var mapper = config.CreateMapper(); return mapper; } } }
Step 4 call , By default ,AutoMapper Map based on the same field name , And is Case insensitive Of . You can also modify the configuration , Realization AutoMapper Provided naming rule mapping .LowerUnderscoreNamingConvention
and PascalCaseNamingConvention
yes AutoMapper Two naming rules provided . The former is named lowercase and contains underscores , The latter is Pascal's naming rule ( Capitalize each word ).
private void promptMessageButton_Click(object sender, EventArgs e) { Source source = new Source() { SomeValue = 1, AnotherValue = "Another" }; var mapper = AutoMapperConfigure.GetMapper(); Destination destination = mapper.Map<Destination>(source); MessageBox.Show(destination.SomeValue.ToString()); }
Like the first screenshot, the more complex one involves the conversion between enumeration and enumeration description , even to the extent that List<string> convert to string, It can also be used. AutoMapper Realization . You can call the written static method on the converted member property , To realize the quasi exchange according to the rules , Here's the picture .
Reference material :https://www.cnblogs.com/gl1573/p/13098031.html
Interested students can also see the official documents , There are also examples :https://docs.automapper.org/en/latest/
The students who read the blog suggest writing it by themselves , To borrow a sentence from Xunzi : No smell, no smell , You can't hear it, you can't see it , If you don't know what you see , What you know is not what you do . If you have any questions, please discuss with me .
边栏推荐
- OpenGL configure assimp
- MIT6.S081-Lab9 FS [2021Fall]
- [开源] .Net ORM 访问 Firebird 数据库
- #DAYU200体验官#MPPT光伏发电项目 DAYU200、Hi3861、华为云IotDA
- The whole network "chases" Zhong Xuegao
- QT compile IOT management platform 39 alarm linkage
- Use br to recover backup data on azure blob storage
- 客户案例|华律网,通过观测云大幅缩短故障定位时间
- Song list 11111
- Validutil, "Rethinking the setting of semi supervised learning on graphs"
猜你喜欢
Navicat connect 2002 - can't connect to local MySQL server through socket '/var/lib/mysql/mysql Sock 'solve
How does win11 unblock the keyboard? Method of unlocking keyboard in win11
[开源] .Net ORM 访问 Firebird 数据库
Qt编写物联网管理平台39-报警联动
ByteDance senior engineer interview, easy to get started, fluent
NVR硬盘录像机通过国标GB28181协议接入EasyCVR,设备通道信息不显示是什么原因?
Crawler (17) - Interview (2) | crawler interview question bank
It's worth seeing. Interview sites and interview skills
Index summary (assault version)
Dry goods sharing | devaxpress v22.1 original help document download collection
随机推荐
648. Word replacement
[advanced MySQL] index details (I): index data page structure
ByteDance senior engineer interview, easy to get started, fluent
Ad domain group policy management
强化学习-学习笔记9 | Multi-Step-TD-Target
[JDBC Part 1] overview, get connection, CRUD
Display optimization when the resolution of easycvr configuration center video recording plan page is adjusted
Matplotlib drawing interface settings
[azure microservice service fabric] how to transfer seed nodes in the service fabric cluster
Backup tidb cluster to persistent volume
NVR硬盤錄像機通過國標GB28181協議接入EasyCVR,設備通道信息不顯示是什麼原因?
How to realize the movement control of characters in horizontal game
Jerry's about TWS channel configuration [chapter]
100million single men and women "online dating", supporting 13billion IPOs
Automatic classification of defective photovoltaic module cells in electronic images
【colmap】稀疏重建转为MVSNet格式输入
Welcome to CSDN markdown editor
Jerry's initiation of ear pairing, reconnection, and opening of discoverable and connectable cyclic functions [chapter]
Validutil, "Rethinking the setting of semi supervised learning on graphs"
Reinforcement learning - learning notes 9 | multi step TD target