Init Ilist в автомате в той же строке - PullRequest
0 голосов
/ 27 июня 2018

Кажется, у меня возникли проблемы с инициализацией IList, определенного в классе, с использованием automapper и последующим добавлением элемента в этот список.

var config = new MapperConfiguration(.ForMember(dest => dest.Catalogs = new List<dto>);

нельзя ли сделать это в одной строке?

1 Ответ

0 голосов
/ 27 июня 2018

Первое, на что вам следует обратить внимание, это то, что AutoMapper будет автоматически создавать коллекции, если он знает, как отобразить элементы этих коллекций.

Например, даны следующие классы:

public class Source {
    public IList<SourceObj> SourceCollection {get; set;}
}

public class Destination {
    public DestDto[] DestinationCollection {get; set;}
}

Коллекции будут правильно сопоставлены с этой конфигурацией:

CreateMap<SourceObj, DestDto>();

CreateMap<Source, Destination>()
    .ForMember(dest => dest.DestinationCollection, opt => opt.MapFrom(src => src.SourceCollection));

Проверьте, работает ли это отображение:

var destDto = Mapper.Map<Destination>(sourceObj);
Assert.IsNotNull(destDto.DestinationCollection);

Если вы всегда хотите установить целевую коллекцию пустым списком, вы можете сделать это с помощью ResolveUsing:

CreateMap<Source, Destination>()
    .ForMember(dest => dest.DestinationCollection, opt => opt.ResolveUsing(src => new List<DestDto>()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...