Automapper从自定义方法创建地图

时间:2017-08-26 23:47:40

标签: c# .net mapping automapper

我有以下课程:

public class Entity
{
      public string Name { get; set; }
}       
public class SomethingDto
{
     public string NameChanged { get; set; }
     public void Mapping(Entity something)
     {
         NameChanged = something.Name;
     }          
}

我想使用DTO的Mapping Method按以下方式创建地图:

conf.CreateMap<Entity, SomethingDto>().ForMember(t => t.NameChanged, opt => opt.MapFrom(t => t.Name));

AutoMapper中有一种方法可以使用自定义方法创建地图,并使用他的投影吗?

1 个答案:

答案 0 :(得分:0)

你不希望这样做,因为这会让DTO意识到这个实体,并且会抛弃你得到的分离。

现在,在这种情况下,行Dir.glob(File.join(path, "*"))将起作用,因为ForMember(t => t.NameChanged, opt => opt.MapFrom(t => t.Name))Name都属于NameChanged类型。假设您想要将类型为string的值为' 20180120-00123456 '的标识符映射到目标上的两个属性:string属性和一个DateTime财产。你可以这两种方式。

简单

您可以在进行映射的类中编写两个映射函数,并按以下方式执行:

  • ProductId
  • ForMember(t => t.Date, opt => opt.MapFrom(t => RetrieveDate(t.Identifier)))

复合

您将创建一个自定义类ForMember(t => t.ProductId, opt => opt.MapFrom(t => RetrieveProductId(t.Identifier)))(现在我假设标识符用于订单),只有OrderIdentifier属性为Id。然后你会像文章描述的那样制作两个custom type converters