if
我的目标是// source classes
public class User
{
public string Id { get; set; }
public string Name { get; set; }
}
public class UserStatus
{
public User User { get; set; }
public int Status { get; set; }
}
// dest classes
public class UserVM
{
public string Id { get; set; }
public string Name { get; set; }
}
public class UserStatusVM : UserVM
{
public int Status { get; set; }
}
//Automapper configuration
c.CreateMap<User, UserVM>();
c.CreateMap<UserStatus, UserStatusVM>()
.ForMember(dest => dest.Status, opt => opt.MapFrom(source => source.Status))
.ForAllOtherMembers(opt => opt.ResolveUsing(source => Mapper.Map<User, UserVM>(source.User))); // error there
的所有成员(Status
除外)已从UserStatusVM
类的User
属性进行映射,就像它映射UserStatus
一样。
我怎样才能实现它?是Users -> UserVM
等类似唯一的解决方案吗?
答案 0 :(得分:1)
重命名UserVM
的属性
public class UserVM
{
public string UserId { get; set; }
public string UserName { get; set; }
}
UserId
和UserName
将按惯例>>分别从UserStatus.User.Id
和UserStatus.User.Name
映射。
注意的
在映射时,Automapper发现UserVM.UserId
类型不会退出UserStatus
,因此会将UserId
拆分为User
和Id
(由CamelCase)和来自UserVM.UserId
UserStatus.User.Id