AutoMapper自动注册映射关系配置

Author Avatar
James Yeung 5月 08, 2018
  • 在其它设备中阅读本文章

使用以下配置,即可免去AutoMapper每个对象映射关系都需要注册的麻烦。

Mapper.Initialize(cfg =>
{
    cfg.ForAllMaps((typeMap, mappingExpr) =>
    {
        var ignoredPropMaps = typeMap.GetPropertyMaps();
        foreach (var map in ignoredPropMaps)
        {
            var sourcePropInfo = map.SourceMember as PropertyInfo;
            if (sourcePropInfo == null) continue;

            if (sourcePropInfo.PropertyType != map.DestinationPropertyType)
                map.Ignored = true;
        }
        mappingExpr.ForAllMembers(opt =>
        {
            if (ignoredPropMaps.All(p => opt.DestinationMember.Name != p.SourceMember.Name))
            {
                opt.Ignore();
            }

        });
    });
});

本文原创授权为:署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0) 协议普通文本 | 协议法律文本
本文链接:https://yangshunjie.com/AutoMappers-automatic-registration-mapping-relationship-configuration.html