使用Automapper时如何忽略特定类型的属性?

时间:2019-02-19 17:05:27

标签: c# automapper

让我们假设我有两种类型:

class Type1
{
    public int Prop1 { get; set; }
    public string Prop2 { get; set; }
    public string Prop3 { get; set; }
}

class Type2
{
    public int Prop1 { get; set; }
    public string Prop2 { get; set; }
    public TypeToIgnore Prop3 { get; set; }
}

我想在这两种类型之间进行映射,但是忽略所有具有TypeToIgnore的属性。这是因为我正在使用反射来遍历所有这些对象,并在它们上进行一些自定义映射。

在从Profile派生的类中,我可以为不想映射的每个成员添加一个Ignore,如下所示:

CreateMap<Type2, Type1>().ForMember(x => x.Prop3, y => y.Ignore());

或者我可以在要忽略的属性上使用IgnoreMapAttribute,但是考虑到在生产代码上,我有很多这样的功能,有没有一种更简单的方法可以完全忽略某些特定类型? >

1 个答案:

答案 0 :(得分:4)

您可以在配置中使用ShouldMapProperty

 cfg.ShouldMapProperty = p => p.PropertyType != typeof(string);

here上的官方文档。真正由您自己制作的feature request