ForAllOtherMembers исключает базовые свойства
Я сопоставляю некоторые свойства класса A с помощью AutoMapper 6.2.2, а для всех остальных членов я игнорирую их с помощью следующего кода:
expression.ForAllOtherMembers(f => f.Ignore());
Это то, что я хочу, но он игнорирует свойства, которые находятся в базовом классе целевого класса A (свойства BaseA). Я хочу отобразить их (свойства из базового класса), используя AutoMapper с отображением некоторых свойств класса. Мне нужна функция с кодом, подобным следующему: 1. сопоставить некоторые свойства из класса A 2. сопоставить ВСЕ свойства из BaseA (и BaseBaseA, и BaseBaseBaseA и т. Д.) 3. игнорировать все другие свойства из класса A
Если у кого-то есть идеи, помогите пожалуйста. Благодарю.
PS Я обновляю AutoMapper с версии 3.2.1 до версии 6.2.2. Я использовал функцию, которая игнорировала все не отображенные свойства из класса A (свойства BaseA отображались нормально). После изменений в новом AutoMapper я не могу использовать ту же функцию - я ищу альтернативные способы сделать это.
1 ответ
Я нашел решение, я добился этого с помощью сравнения текущих классов:
var destType = typeof(TDestination);
expression.ForAllOtherMembers(f => { if (f.DestinationMember.DeclaringType == destType) f.Ignore(); });
После изменения структуры AutoMapper я сильно изменился в своем проекте. Я думаю, кто-то, кто обновляет проект инициализации AutoMapper, использовал бы этот код, для случая как мой..