【发布时间】:2020-12-29 16:59:15
【问题描述】:
假设我有 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 多个属性,我想以某种方式避免重复。
【问题讨论】:
-
如果我没记错的话,它只有在我有继承(例如 User -> UserDto)时才有效,但我没有继承。
-
是的。如果你不想这样,你可以使用一个界面来代替。
标签: c# automapper