c#-仅使用Automapper映射特定类型

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中,但仅将十进制类型映射到Automapper中?

解决方法:

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

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

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

不知道这是否正是您的意思.也许您只想检查源属性类型或目标属性类型,但是希望您能理解.

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

上一篇:ASP.NET Core教程【一】关于Razor Page的知识


下一篇:c#-将平面JSON /字典映射到模型(包含子类)