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, использовал бы этот код, для случая как мой..

Другие вопросы по тегам