Как нормально отображать с 2 классами, но использовать AfterMap в IEnumerable того же 2 объекта - PullRequest
0 голосов
/ 16 июня 2020

У меня есть эти классы

public class LegalDTO
{
    public int LegalId {get; set;}
    public string LegalName {get; set;}
    public Person Person {get; set;}
    public Person Person2 {get; set;}
}

public class LegalModel
{
    public int LegalId {get; set;}
    public string LegalName {get; set;}
    public int PersonId {get; set;}
    public string Name {get; set;}
}

public class Person
{
    public int PersonId {get; set;}
    public string Name {get; set;}
}

У меня есть это в моем MappingProfile

CreateMap<IEnumerable<LegalModel>, IEnumerable<LegalDTO>>()
.ForMember(dest => dest.LegalId , opt => opt.MapFrom(src => src.LegalId ))
.ForMember(dest => dest.LegalName , opt => opt.MapFrom(src => src.LegalName ))
.AfterMap((src, dest) =>
{
    //Logic that Maps Person properties of LegalModel to Person and Person2 property of LegalDto
}

Как сопоставить свойства

  • LegalModel .LegalId в LegalDto.LegalId

  • LegalModel.LegalName в LegalDto.LegalName

  • LegalModel.PersonId и LegalModel.Name для LegalDto.Person на основе некоторые logi c

и

  • LegalModel.PersonId и LegalModel.Name для LegalDto.Person2 на основе некоторых logi c

Изменить: из комментарий ниже :

Я хочу сопоставить LegalId и LegalName как обычно, но хочу сопоставить Person и Person2 после карта только если его IEnumerable

1 Ответ

1 голос
/ 16 июня 2020

Automapper поддерживает перечислимые сопоставления из коробки, поэтому вам не нужно настраивать их, если вы настроили сопоставление классов. Учитывая это:

new MapperConfiguration(cfg => cfg.CreateMap<LegalModel, LegalDTO>()...);

Это должно работать:

new List<LegalModel>  source = ...  
IEnumerable<LegalDTO> mapped = mapper.Map<IEnumerable<LegalDTO>>(source);

Так что просто настройте отображение LegalModel -> LegalDTO правильно и позвольте Automapper обрабатывать коллекции.

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