Есть два родительских объекта A и B типа Parent. У объекта A некоторые поля типа Child у которых есть nullable поля и они равны null.
enum Gender {
Male = 1,
Female
}
class Parent {
public int Number;
public Child Children;
}
class Child {
public string Name;
public Gender? Gender;
}
/// Объект A
var a = new Parent {
Number = 1,
Children = new Child {
Name = "Child2",
Gender = null // <---------------------------
}
};
И есть объект B с которым надо слить A и у которого поле Gender не равно null тоесть его надо оставить не тронутым:
/// Объект B
var b = new Parent {
Number = 2,
Children = new Child {
Name = "Child1",
Gender = Gender.Male // При слиянии не трогать если у объекта A там null
}
};
Необходимо делать слияние двух родительских объектов A и B, но если поля у объекта A или у его потомков равны null, то у объекта B оставлять значения полей не тронутыми(не перетирать их null’ами)
Настраивая AutoMapper, я указал опцию:
CreateMap<Parent, Parent>().ForAllMembers(options =>
options.UseDestinationValue()
);
Она решает проблему для объектов Parent, но не для объектов Child, что бы работало и для Child, необходимо настраивать еще и для них так же:
CreateMap<Child, Child>().ForAllMembers(options =>
options.UseDestinationValue()
);
Вопрос в том, можно ли избежать дополнительных настроек, задав один раз для всех объектов которые содержит в себе Parent потому что в реальной жизни придётся писать несколько десятков таких настроек для всех типов которые содержатся в родительских классах, а это могут быть сотни.