Automapper: использовать сопоставление по умолчанию для всех остальных членов - PullRequest
0 голосов
/ 04 октября 2019

У меня много классов для сопоставления из IDataReader, например:

class Dest
{
   public string Field1;
   public string Field2;
   public string Field3;
}

...

public DestProfile
{
   CreateMap<IDataReader, Dest>()
     .ForMember(d => d.Field1, opt => opt.MapFrom(/*Do some custom convertion here*/)
     .ForAllOtherMembers(/*Do default convention-based mapping for all other members/*)
}

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

Вопрос выглядит очень часто, но я не нашел, как этого добиться.

1 Ответ

0 голосов
/ 10 октября 2019

Итак, самый простой способ - написать так:

.ForAllOtherMembers(opt => opt.MapFrom(src => src[opt.DestinationMember.Name]))

Но есть некоторые предостережения. Например,

.IncludeBase<IDataReader, Base>()
.ForAllOtherMembers(opt => opt.MapFrom(src => src[opt.DestinationMember.Name]))

Здесь ForAllOtherMembers переопределит определение базового класса.

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