AutoMapper - зачем использовать Map over DynamicMap?

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

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

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

Mapper.DynamicMap(SrcObject, DestObj);

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

Ответы

Ответ 1

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

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

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

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

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