使用最新版本的Automapper(6.1.1)忽略具有不同类型和名称的所有成员的映射

时间:2017-08-01 19:45:53

标签: c# automapper-6

如果某些属性具有相同名称的不同类型,我如何忽略映射?默认情况下它会抛出错误。 我找到了旧版本的automapper的一些答案,但他们没有使用最新版本。

例如,一个属性是字符串,另一个属性是bool,但它们都具有相同的名称。我想要的行为是忽略它们(不要试图映射它们)。

1 个答案:

答案 0 :(得分:0)

以下是基于此link

的小例子
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<Class1, Class2>();

    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;
        }
    });
});

Class1 src = new Class1()
{
    TestProperty = "A"
};
Class2 dest = Mapper.Map<Class1, Class2>(src);

测试类:

public class Class1
{
    public string TestProperty { get; set; }
}

public class Class2
{
    public bool TestProperty { get; set; }
}