我是Automapper框架的新手。我有一个域类和一个DTO类,如下所示:
public class Employee
{
public long Id {get;set;}
public string Name {get;set;}
public string Phone {get;set;}
public string Fax {get;set;}
public DateTime DateOfBirth {get;set;}
}
public class EmployeeDto
{
public long Id {get;set;}
public string FullName {get;set;}
public DateTime DateOfBirth {get;set;}
}
注意:Employee
类的 name 属性与EmployeeDto
类的FullName属性名称不一致。
下面是将Employee
对象映射到EmployeeDto
的代码
Mapper.CreateMap<Employee, EmployeeDto>(); // code line (***)
EmployeeDto dto = Mapper.Map<Employee, EmployeeDto>(employee);
我的问题是:如果我想将Employee
(源类)映射到EmployeeDto
(目标类),如何指定映射规则?换句话说,我应该如何对上面的代码行(*)做更多的事情?
发布于 2013-02-09 01:43:47
不要紧,我自己找到了一个解决方案:
Mapper.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name));
发布于 2019-07-30 00:09:44
只需将上面的注释滚动到使用Automapper 8.1+的更新方法中...
var mapConfig = new MapperConfiguration(
cfg => cfg.CreateMap<Employee, EmployeeDto>()
.ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name))
);
然后,您将使用mapConfig构建映射器:
var mapper = mapConfig.CreateMapper();
发布于 2020-03-13 23:30:51
我们还可以指定用于映射的类属性
来自https://docs.automapper.org/en/stable/Conventions.html#attribute-support
属性支持
AddMemberConfiguration().AddName<SourceToDestinationNameMapperAttributesMember>();
*当前始终处于打开状态
查找属性/字段的SourceToDestinationMapperAttribute实例,并调用用户定义的isMatch函数以查找成员匹配项。
MapToAttribute是其中之一,它将根据提供的名称匹配属性。
public class Foo { MapTo("SourceOfBar") public int Bar { get;set;} }
https://stackoverflow.com/questions/14777601
复制相似问题