Automapper Upgrade FindTypeMapFor<>



我正在更新一个旧的。net框架应用程序到最新支持的Automapper nuget(从v3.3.1到v10.0.0)。原始代码以可怕的方式扩展了automapper,我已经能够将其转换为使用内置方法,除了这个:

// Ignores all destination properties which would otherwise be mapped by convention.
public static IMappingExpression<TSource, TDestination> IgnoreUnMapped<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
TypeMap map = Mapper.FindTypeMapFor<TSource, TDestination>();
foreach (var property in map.GetCustomPropertyMaps()
.Where(p => p.CustomExpression == null)
.Select(p => p.DestinationProperty.Name))
{
expression.ForMember(property, opt => opt.Ignore());
}
return expression;
}

我找到了这个页面,它提供了v4.2的解决方案,但不再适用于v10。

这需要强制转换,但这是Automapper作者留给实际必须维护软件的人的唯一选择:

var typeMapConfiguration = (TypeMapConfiguration)expression;
foreach (var property in typeMapConfiguration.TypeMap.GetUnmappedPropertyNames())
{
expression.ForMember(property, opt => opt.Ignore());
}

最新更新