AutoMapper - зачем использовать Map над DynamicMap? - PullRequest
14 голосов
/ 16 марта 2012

Предполагая, объекты, которые вы отображаете с помощью AutoMapper, не требуют пользовательских сопоставлений, есть ли смысл в этом:

Mapper.CreateMap<Src, Dest>(); 
// ....
Mapper.Map(SrcObject, DestObj);

Если никаких пользовательских сопоставлений не требуется, принесет ли вам вышеуказанный подход что-то большее, чем просто использование DynamicMap без необходимости какой-либо предварительной настройки?

Mapper.DynamicMap(SrcObject, DestObj);

Я понимаю, что DynamicMap является обязательным обязательным , когда вы отображаете анонимные типы, но я спрашиваю, является ли DyanmicMap когда-либо не предпочтительным для статических типов, которые не требуют пользовательских отображений.

1 Ответ

16 голосов
/ 16 марта 2012

Прошло много времени с тех пор, как я последний раз использовал Automapper, но если я правильно помню:

Чтобы использовать Map, вам необходимо сначала явно указать эти Карты с помощью CreateMap. После этого вы можете проверить свою конфигурацию, позвонив по номеру AssertConfigurationIsValid.

Это происходит сразу после запуска приложения, а не после ошибки во время выполнения (если вы создаете сопоставления и проверяете при запуске, что рекомендуется).

Кроме того, некоторые типы не соответствуют 1: 1, поэтому вы хотите указать точные сопоставления, но не уверены, что DynamicMap использует карты, которые вы ввели вручную, на самом деле я думаю, что это не так.
Только что проверил, DynamicMap возвращается к существующим картам в текущей версии на github.

Это также вопрос производительности, поскольку DynamicMap использует отражение более интенсивно, чем метод Map, поскольку вы уже указали конфигурацию отображения, и большую часть ее больше не нужно утверждать на лету. Однако не уверен, что новая версия Automapper выполняет кеширование в этом отношении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...