AutoMapper:运行时类型跳过给定的成员

本文关键字:成员 运行时 类型 AutoMapper | 更新日期: 2023-09-27 18:25:00

在使用AutoMapper映射运行时类型时,是否有方法将其配置为跳过某些属性。我创建了一个地图

Mapper.CreateMap(typeA, typeB)

然后,如果我需要跳过一个属性,我会添加

.ForMember("propertyA", prop => prop.Ignore)

这很好。问题是如何为更多的属性实现这一点,而这些属性在编码时还不知道。所以我需要跳过一些列表中的所有属性。基本上我想我需要这样的东西:

.ForAllMembers(opt => opt.Condition(prop => !skipThese.Contains(prop.MemberName)))

AutoMapper:运行时类型跳过给定的成员

因此,经过一些搜索,我将其作为一种扩展方法:

    public static IMappingExpression<TSource, TDestination> ExcludingThese<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression, List<String> exclude)
    {
        foreach (String stringVar in exclude)
        {
            expression.ForMember(stringVar, excl => excl.Ignore());
        }
        return expression;
    }