Использование Automapper, когда имена свойств отличаются - PullRequest
21 голосов
/ 02 февраля 2010

Мы используем AutoMapper из Codeplex, и для меня у целевого объекта есть все свойства, оканчивающиеся на 'Field', т.е. cityField, а у исходного объекта просто city.

Я могу использовать приведенный ниже код для достижения, но все свойства просто с суффиксом «Поле» и есть 20 свойств.

.ForMember(dest => dest.cityField, opt => opt.MapFrom(origin => origin.City));

Есть ли другой способ игнорировать слово 'Field' при отображении, чтобы оно могло отображаться без использования .ForMember () 20 раз?

Ответы [ 2 ]

18 голосов
/ 04 февраля 2010

Вы можете попробовать распознать постфиксы:

Mapper.Initialize(cfg => {
    cfg.RecognizePostfixes("Field");
    cfg.CreateMap<Source, Dest>();
});

Распознавание префиксов также работает локально для профилей, если это только набор карт, к которым это относится.

3 голосов
/ 02 февраля 2010

Я думаю, вам придется реализовать собственную INamingConvention , чтобы обойти это.

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