自动映射器不映射基础

时间:2015-09-01 12:54:03

标签: c# automapper

嗨我在使用自动播放器进行映射工作时遇到了一些麻烦。

我有2个DTO BaseDto和BaseOrganizationDto

public class BaseDto
{}

public class SensitiveBaseDto : BaseDto
{}

我使用以下映射:

CreateMap<IEntity, BaseDto>()
                .Include<IEntity, SensitiveBaseDto>()
                .IncludeBase<IEntity, BaseDto>();

我尝试基于某些逻辑来获得某个dto,例如

public BaseDto MapToDto(Guid asSeenById, IEntity entity)
    if (entity.Id != asSeenById)
    {
      return this.MapToDto<BaseDto>(entity);
    }
    return this.MapToDto<SensitiveBaseDto>(entity);
}

但它总是返回一个SensitiveBaseDto,我已经验证了MapToDto方法中的逻辑是否正确执行。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

通过这样做解决了这个问题:

public override TDtoType MapToDto<TDtoType>(IEntity entity)
{
    var dto = typeof(TDtoType) == typeof(SensitiveDto) 
        ? new SensitiveDto() 
        : new BaseDto();

    this.Engine.Map(entity, dto);
    return dto as TDtoType;
}