Отображение отдельного объекта в список в AutoMapper

#c# #automapper

#c# #automapper

Вопрос:

У меня есть два типа:

Источник:

 public class User
{
    public string City { get; set; } = "";
    public Guid Identifier { get; set; } = Guid.NewGuid();
}
  

Назначение:

 public class UserDTO 
{
    public Guid Id { get; set; } = Guid.NewGuid();
    public List<Address> Address { get; set; }
}

public class Address
{
    public string City { get; set; } = "";
}
  

Как я могу создать сопоставление с помощью AutoMapper из одного объекта City в список адресов со свойством City в нем? Теперь это мое отображение:

     public UserMappings()
    {
        CreateMap<User, UserDTO>()
            .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Identifier));
    }
  

Ответ №1:

Вы можете создавать объекты, включая массивы и списки «на лету», при отображении, как показано ниже :

 public UserMappings()
{
   CreateMap<User, UserDTO>()
      .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Identifier))
      .ForMember(dest => dest.Address,
                opt => opt.MapFrom(
                           src => new List<Address> { 
                                  new Address { City = src.City }
                           }));
}