Главная страница   /   11.2. Что такое AutoMapper (ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

Джеффри Палермо

11.2. Что такое AutoMapper

Мы собираемся реализовать функционал, используя AutoMapper, но для начала вкратце рассмотрим базовые возможности AutoMapper. Получив исходный тип и тип назначения, AutoMapper присваивает значения элементов, свойств и методов исходного типа соответствующим элементам назначенного типа. Он делает это автоматически, основываясь на именах элементов.

Для начала давайте рассмотрим пару простых примеров. (Обратите внимание, что это не инструкции для создания компонентов, а только простые, надуманные примеры, которые призваны показать, как работает AutoMapper.)

Преобразование для установления соответствия имен свойств

В первом примере представим, что мы хотим преобразовать объект Source в объект Destination. Следующий листинг показывает эти два класса. Имена совпадают, так что AutoMapper просто преобразовывает значение (и вызывает ToString() в свойстве Source.Number).

Листинг 11-3: Вводное преобразование
public class Source
{
	public int Number { get; set; }
}
public class Destination
{
	public string Number { get; set; }
}

[Test]
public void Demonstration1()
{
	Mapper.CreateMap<Source, Destination>();
	var source = new Source {Number = 3};
	Destination destination = Mapper.Map<Source, Destination>(source);
	Console.WriteLine(destination.Number);
}

Строка 12: Преобразует при помощи AutoMapper

Строка 15: Выполняет наложение при помощи AutoMapper

Выходные данные теста в листинге 11-3 находится в строке 3. AutoMapper просто смотрит на имена и, если они совпадают, присваивает значение.

Выравнивание иерархий объектов

На самом деле, наши объекты редко будут простыми – мы чаще имеем дело с иерархиями объектов. AutoMapper, может выровнять графы объектов, проектируя иерархии в новую форму. В следующем листинге AutoMapper выравнивает простую иерархию.

Листинг 11-4: Выравнивание простой иерархии
public class Source
{
	public Child Child { get; set; }
}
public class Child
{
	public int Number { get; set; }
}
public class Destination
{
	public string ChildNumber { get; set; }
}
[Test]
public void Demonstration1()
{
	Mapper.CreateMap<Source, Destination>();
	var source = new Source
	{
		Child = new Child{ Number = 3}
	};
	Destination destination =
		Mapper.Map<Source, Destination>(source);
	Console.WriteLine(destination.ChildNumber);
}

Строка 11: AutoMapper работает с соглашением по именованиям

Строка 23: Результат равен "3"

Опять же, AutoMapper полагается на имя свойства назначения, чтобы выяснить, откуда будет поступать исходное значение. Так как наше свойство назначения называется ChildNumber, AutoMapper будет преобразовывать Child.Number.

AutoMapper может сделать гораздо больше, чем просто присвоить значения и выровнять структуру. Разработчики могут настроить специальные средства форматирования и поручить AutoMapper делать другие действия во время преобразования. Теперь, когда мы видели, как работает AutoMapper, давайте использовать эти дополнительные возможности и применим AutoMapper нашему ASP.NET MVC представлению, которое отображает информацию о клиентах.