It would be more correct to give the BananaWrapper class the name BananaDTO, in order to accurately reflect its functional purpose, but I will leave this name for a higher level of abstraction, for example, if we need to make a banana machine and place this object in the Presenter ModelI want to note that sometimes the task of transforming objects becomes quite non-trivial and at best looks something like this (this solution head-on, there are even more sophisticated methods;)):
I think that this code will be a joy to write, and even more so to accompany, recently I have often met with such tasks recently, and was looking for a solution to the problem.public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
public class Banana { public string Country { get ; set ; } public double Price { get ; set ; } public double NationalTax { get ; set ; } public bool CocaineInjection { get ; set ; } public bool FreshForFooding { get ; set ; } public string AkunamatataName { get ; set ; } public string BananaGeneration { get ; set ; } public int Age { get ; set ; } } public class BananaWrapper { public string Country { get ; set ; } public double Price { get ; set ; } public int Age { get ; set ; } } public class BananaMapper { public BananaWrapper GetWrapper(Banana banana) { return new BananaWrapper { Country = banana.Country, Price = banana.Price, Age = banana.Age }; } } * This source code was highlighted with Source Code Highlighter .
Class, and that's really all I need. The complexity of the overlying example has dropped to zero in my eyes. So, what kind of mechanisms lie inside AutoMapper? AutoMapper checks there are corresponding fields in the specified types, the match is carried out both by the name of the property and by its type. Even nuances such as Product.Name and ProductName will be taken into account and processed automatically (wow!). Plus, the GetXXX () methods will fall on the XXX properties (yes, and of course, for particularly irritable ones, all these charms can be disabled and redefined everything in their own correspondence tables (hereafter)). The custom configuration looks like this:* This source code was highlighted with Source Code Highlighter .
- public class BananaMapper
- {
- public BananaMapper ()
- {
- Mapper.CreateMap <Banana, BananaWrapper> ();
- }
- public BananaWrapper GetWrapper (Banana banana)
- {
- return Mapper.Map <Banana, BananaWrapper> (banana); ;
- }
- }
By the way, all your custom configurations are easy to verify using the following method:* This source code was highlighted with Source Code Highlighter .
- Mapper.CreateMap <CalendarEvent, CalendarEventForm> ()
- .ForMember (dest => dest.EventDate, opt => opt.MapFrom (src => src.EventDate.Date))
- .ForMember (dest => dest.EventHour, opt => opt.MapFrom (src => src.EventDate.Hour))
- .ForMember (dest => dest.EventMinute, opt => opt.MapFrom (src => src.EventDate.Minute));
It also does not work badly with:* This source code was highlighted with Source Code Highlighter .
- Mapper.AssertConfigurationIsValid ();
Source: https://habr.com/ru/post/71820/
All Articles