AutoMapper: объединение значений элементов в коллекции из одного экземпляра в другой
Я пытаюсь выяснить, как объединить два экземпляра сложных объектов с помощью AutoMapper. У родительского объекта есть свойство, которое является коллекцией дочерних объектов:
public class Parent
{
public List<Child> Children { get; set; }
}
public class Child
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
У меня есть два случаяParent
:
var parentOne = new Parent()
{
Children = new List<Child>() { new Child() { A = "A", B = "B", C = "C" } }
};
var parentTwo = new Parent()
{
Children = new List<Child>() { new Child() { C = "Updated value" } }
};
Я хотел бы иметь возможность объединить значения изparentOne
вparentTwo
без перезаписи значенияC
вparentTwo
, Карты, которые я создал, следующие:
Mapper.CreateMap<Parent, Parent>()
.ForMember(parent => parent.Children, opt => opt.UseDestinationValue());
Mapper.CreateMap<Child, Child>()
.ForMember(child => child.C, opt => opt.Ignore());
Mapper.Map(parentOne, parentTwo);
Насколько я понимаю, AutoMapper будет создавать новые экземпляры сложных свойств, если вы не используетеUseDestinationValue()
вариант. Однако после выполнения кода выше,parentTwo.C
равняется"C"
вместо"Updated value"
.
Мне кажется, что он хранит примерList<Child>
, но это создает новые экземплярыChild
в список. К сожалению, я изо всех сил пытаюсь придумать карту, которая будет держать каждый экземплярChild
также.
Любая помощь приветствуется!