Я пытаюсь выяснить, как объединить два сложных объекта, используя 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
.
Любая помощь будет высоко ценится!