@VasyaM13221

Automapper как унаследовать конфигурацию родителя?

Есть два родительских объекта 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 потому что в реальной жизни придётся писать несколько десятков таких настроек для всех типов которые содержатся в родительских классах, а это могут быть сотни.
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы