Подтвердить что ты не робот

Использование Automapper, когда имена свойств различны

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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