假设我有类 UserInfoDto、UserDto 和 User
//Dto
public class UserInfoDto
{
public string UserName {get; set;}
public DateTime DoB {get; set;}
}
//Another Dto
public class UserDto
{
public string Name {get; set;}
public DateTime DateOfBirth {get; set;}
}
//DB model
public class User
{
public string Name {get; set;}
public DateTime DateOfBirth {get; set;}
}
我想创建 2 个映射:
从 UserInfoDto 到 UserDto
从 UserInfoD 到用户
CreateMap<UserInfoDto, UserDto>()
.ForMember(d => d.Name, opt => opt.MapFrom(s => s.UserName))
.ForMember(d => d.DateOfBirth, opt => opt.MapFrom(s => s.DoB))
CreateMap<UserInfoDto, User>()
.ForMember(d => d.Name, opt => opt.MapFrom(s => s.UserName))
.ForMember(d => d.DateOfBirth, opt => opt.MapFrom(s => s.DoB))
如您所见,我有两个相同的映射。有没有办法只创建一个映射(例如第一个)并在第二种情况下重用这个映射的设置?
我之所以这么问是因为在现实世界的代码中我有 20 多个属性,我想以某种方式避免重复。
答案 0 :(得分:1)
如果您的属性具有相同的名称,则无需显式映射它们。做到以下几点就足够了:
CreateMap<UserInfoDto, UserDto>();
CreateMap<UserInfoDto, User>();
因此,Automapper
将通过自身的名称映射属性。