可以将ForAllPropertyMaps()中的predicate改为Action,再在该Action中添加条件判断。例如:
_mapper.Configuration.ForAllPropertyMaps(
(propertyMap, context) =>
{
if (!context.TypeMap.DestinationType.GetProperties().Any(x => x.Name == propertyMap.DestinationProperty.Name))
{
// 只处理存在于目标类型的属性
return;
}
// 其余的映射逻辑
// ...
});
这样就可以避免predicate的意外副作用。