首页 > 解决方案 > 如何将外部和内部源映射到同一个对象 - 自动映射器

问题描述

我有这个结构:

public class UserEntity
{
    public long Id { get; set; }
    public string Name { get; set; }
    public string UserName { get; set; }
    public ComplexObject TimeZone { get; set; }
}

public class UserQueryResult
{
    public UserEntity User { get; set; }
    public ObjectId AccountId { get; set; }
}

public class UserDto
{
    public long Id { get; set; }
    public string Name { get; set; }
    public string UserName { get; set; }
    public string TimeZoneId { get; set; }
    public string AccountId { get; set; }
}

我有 UserEntity 到 UserDto 的映射,如下所示:

CreateMap<UserEntity, UserDto>()
    .ForMember(dest => dest.TimeZoneId, opt => opt.ResolveUsing<UserTimeZoneResolver>())
    .ForMember(dest => dest.AccountId, opt => opt.Ignore());

如您所见,有一个从 UserEntity 到 UserDto 的解析器。现在,如果我想将 UserQueryResult 映射到 UserDto,我怎样才能重用上面的映射器而不需要手动映射所有属性?

CreateMap<UserQueryResult, UserDto>()
    .ForMember(dest => dest.AccountId, opt => opt.MapFrom(src => src.AccountId.ToString()))
    .// use the UserEntity to UserDto map?

标签: c#automapper

解决方案


推荐阅读