Обычно AutoMapper отлично подходит для отображения между объектами данных и бизнес-моделями.Например, скажем, например, у меня есть тип предметной области, назовите его PersonEntity
, и у него есть массив свойств: FirstName
, Surname
, Gender
и т. Д. Я не хочу раскрывать свои данныеот типа домена до приложения-потребителя, так что я могу определить типы бизнес-доменов, например Person
, теперь тип Person
может содержать дополнительную бизнес-логику, такую как GetRelatedPersons
и т. д., которая может не соответствовать функциональности, привязанной к вашим данным.домен.В этом случае у меня есть два типа, PersonEntity
и Person
, которые в какой-то момент мне придется написать шаблонный код для копирования свойств из одного в другой.Я мог бы сделать это различными способами, я мог бы:
1.Конструктор копирования:
public Person(PersonEntity entity) {
2.Общий метод картирования:
public Person CreatePerson(PersonEntity entity) {
3. Неявный/ Явное преобразование:
public static implicit operator Person(PersonEntity entity) {
Но то, что позволяет делать AutoMapper, - это легко создать процесс отображения между этими двумя типами.Таким образом, в форме simiplist я мог бы:
Person person = Mapper.Map<PersonEntity, Person>(entity);
Используя подход, основанный на соглашении, среда AutoMapper преобразует соответствующие свойства из одного экземпляра в другой.Это также позволяет вам настраивать отображение типов, если вы хотите более точный контроль.
Надеюсь, это поможет.