当前位置:网站首页>. 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 .
边栏推荐
- Actual combat: sqlserver 2008 Extended event XML is converted to standard table format [easy to understand]
- Tsconfig of typescript TS basics JSON configuration options
- Ternary expressions, generative expressions, anonymous functions
- Jenkins user rights management
- 如何选择合适的自动化测试工具?
- Tupu digital twin coal mining system to create "hard power" of coal mining
- operator
- Pre sale 179000, hengchi 5 can fire? Product power online depends on how it is sold
- npm uninstall和rm直接删除的区别
- Oracle advanced (VI) Oracle expdp/impdp details
猜你喜欢
Dayu200 experience officer MPPT photovoltaic power generation project dayu200, hi3861, Huawei cloud iotda
反爬通杀神器
Paint basic graphics with custompaint
PKPM 2020 software installation package download and installation tutorial
Wechat official account oauth2.0 authorizes login and displays user information
It's worth seeing. Interview sites and interview skills
Anti climbing killer
Jerry's initiation of ear pairing, reconnection, and opening of discoverable and connectable cyclic functions [chapter]
How to turn on win11 game mode? How to turn on game mode in win11
Jerry's test box configuration channel [chapter]
随机推荐
L'enregistreur de disque dur NVR est connecté à easycvr par le Protocole GB 28181. Quelle est la raison pour laquelle l'information sur le canal de l'appareil n'est pas affichée?
How does win11 unblock the keyboard? Method of unlocking keyboard in win11
Oracle advanced (VI) Oracle expdp/impdp details
Pre sale 179000, hengchi 5 can fire? Product power online depends on how it is sold
It's worth seeing. Interview sites and interview skills
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
Paint basic graphics with custompaint
QT compile IOT management platform 39 alarm linkage
Two kinds of updates lost and Solutions
Use json Stringify() to realize deep copy, be careful, there may be a huge hole
OpenGL job - texture
Backup tidb cluster to persistent volume
Restapi version control strategy [eolink translation]
Use partial derivatives to display normals in unity
Song list 11111
Kirin Xin'an operating system derivative solution | storage multipath management system, effectively improving the reliability of data transmission
Latest Android advanced interview questions summary, Android interview questions and answers
Tcp/ip protocol stack
【colmap】稀疏重建转为MVSNet格式输入
Crawler (17) - Interview (2) | crawler interview question bank