使用Automapper只映射特定的类型

本文关键字:类型 映射 Automapper 使用 | 更新日期: 2023-09-27 18:14:19

public class Destination
{
    public decimal Obj1 { set; get; }
    public decimal Obj2 { set; get; }
    public int Obj3 { set; get; }
}
public class Source
{
    public decimal Obj1 { set; get; }
    public decimal Obj2 { set; get; }
    public decimal Obj3 { set; get; }
}

如何用Automapper将Source类映射到Destination,而只映射到Decimal类?

使用Automapper只映射特定的类型

我认为你可以使用条件映射:

下面的示例将只映射源和目标类型为decimal的属性。你可以这样定义你的映射:

Mapper.CreateMap<Source, Destination>()
                .ForAllMembers(s=>s.Condition(t =>t.SourceType == typeof(decimal) 
                                               && t.DestinationType == typeof(decimal)));

然后像这样使用映射:

  var src = new Source();
  src.Obj1 = 1;
  src.Obj2 = 2;
  src.Obj3 = 3;
  var dst  = Mapper.Map<Destination>(src);

dst变量现在将只映射Obj1和Obj2属性。Obj3为0 (int类型的默认值)。

不确定这是否是你的意思。也许你只想检查源属性类型或目标属性类型,但我希望你明白这一点。

以上是一种泛型方法,如果更多的属性/类型被添加到类中,它仍然可以工作。