繁体   English   中英

使用 Automapper 对两种不同类型进行相同的映射

[英]Same mapping for two different types using Automapper

假设我有 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个映射:

  1. 从 UserInfoDto 到 UserDto

  2. 从 UserInfoDto 到 User

     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 多个属性,我想以某种方式避免重复。

如果您的属性具有相同的名称,则无需明确 map 它们。 执行以下操作就足够了:

CreateMap<UserInfoDto, UserDto>();
CreateMap<UserInfoDto, User>();

所以Automapper将 map 属性自己命名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM