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

我如何将Source类映射到Destination,但只能Decimal使用 Automapper 类型?

4

1 回答 1

4

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

以下示例将仅映射源和目标类型为十进制的属性。您可以像这样定义映射:

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 的默认值)。

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

以上是一种通用方法,如果将更多属性/类型添加到类中,它仍然有效。

于 2014-07-22T08:47:33.377 回答