Скажем, у меня есть класс со следующим определением:
public class DestinationOuter
{
public string Name { get; set; }
public int Age { get; set; }
public List<DestinationInner> Siblings { get; set; }
}
public class DestinationInner
{
public string Name { get; set; }
public RelationEnum Relation { get; set; }
}
И, скажем, у меня есть тип источника:
public class SourceSiblings
{
public string Name { get; set; }
public RelationEnum Relation { get; set; }
}
С AutoMapper я могу легко создать конфигурацию, которая сопоставляется сSourceSiblings
до DestinationInner
, что позволяет мне сделать сопоставление следующим образом:
SourceSiblings[] brothers = { ... };
DestinationOuter dest = new DestinationOuter();
Mapper.Map(brothers, dest.Siblings);
Но то, что я хотел бы сделать, это сопоставить непосредственно с SourceSiblings
на DestinationOuter
.В этом случае свойства Name и Age в DestinationOuter
будут игнорироваться в отображении, но идея заключается в том, что SourceSiblings
будет отображаться в DestinationOuter.Siblings
.Используя описанные выше объявления объектов, я бы хотел иметь возможность:
Mapper.Map(brothers, dest);
Я не уверен, как заставить это работать.Я могу настроить конфигурацию так:
CreateMap<IEnumerable<SourceSiblings>, DestinationOuter>();
Но это ничего не делает.Похоже, мне нужно иметь возможность сказать что-то вроде:
CreateMap<IEnumerable<SourceSiblings>, DestinationOuter>()
.ForMember(dest => dest.Siblings,
opt => opt.MapFrom(src => src));
И хотя вышеизложенное компилируется, Mapper.Map
на самом деле не отображает значения.