AutoMapper неразрушающего сверки списков?

У меня есть список целевого объекта, который я хочу согласовать с источником.

Список уже создан, я просто хочу, чтобы AutoMapper добавлял / обновлял / удалял элементы из этого списка, и ни в коем случае нельзя устанавливать для списка новую ссылку на объект. Как я могу это сделать?

Причина этого заключается в том, что целевой объект является сгенерированным кодом ORM, и по какой-либо причине он не имеет установщика.

Цель выглядит так:

 public class Target
 {
      //This is the target member.
      public List EntityList
      {
           get{
                return _entityList;
           }
      }

      //Except this is a much more complicated, track-able list
      private List _entityList= new List(); 
 }

1 ответ

Исходя из моего опыта, AutoMapper на самом деле не предназначен для отображения уже заполненных объектов. Но один из способов сделать то, что вы просите, это настроить AutoMapper на игнорирование EntityList свойство для отображения, затем используйте AfterMap чтобы вызвать какую-то пользовательскую функцию согласования, которую вы пишете, чтобы выровнять два списка

Mapper.CreateMap<Source, Target>()
              .ForMember(dest => dest.EntityList, opt => opt.Ignore())
              .AfterMap((src, dest) => Reconcile(src.EntityList, dest.EntityList));
Другие вопросы по тегам