Я пытаюсь сопоставить объект со свойством коллекции другому объекту с вложенным классом, содержащим сопоставленные версии исходных коллекций, но я не могу определить, какое требуется соответствующее сопоставление.
Нижемой класс и попытки сопоставления.
public class TypeA
{
public int Id;
public string Description;
}
public class TypeB
{
public int Id;
public int Code;
}
public class Source
{
public ICollection<TypeA> A;
public ICollection<TypeB> B;
}
public class Destination
{
public DestinationInner Inner;
}
public class DestinationInner
{
public ICollection<int> A;
public ICollection<int> B;
}
У меня определены следующие сопоставления, которые отлично работают, когда целевая коллекция находится на родительском уровне, а не в классе DestinationInner.
Mapper.CreateMap<TypeA, int>()
.ConvertUsing(a => a.Id);
Mapper.CreateMap<TypeB, int>()
.ConvertUsing(b => b.Id);
Я пытался добавитькарта, например, но я не могу найти способ принудительного отображения здесь коллекций
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.Inner,
opt.MapFrom(s => new DestinationInner()
{
// not sure if I can assign anything here
A =
B =
}));
Является ли MapFrom подходящим методом для использования здесь - или я подхожу к этому с неправильного направления?
Альтернативой является не использовать AutoMapper для коллекций и просто использовать Linq, но я думаю, что должен быть способ полностью использовать AutoMapper:
Mapper.CreateMap<Source, Destination>()
.ForMember(d => d.Inner,
opt.MapFrom(s => new DestinationInner()
{
A = s.A.Select(a => a.Id).ToList(),
B = s.B.Select(b => b.Id).ToList(),
}));