AutoMapper添加源中不存在但目标中必须存在的自定义属性

时间:2018-12-05 17:43:04

标签: c# automapper

我有一个简单的ASP.NET Core控制器:

[HttpGet("{id:int}")]
[ProducesResponseType(200)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public ActionResult<RequestDto> Get(int id, [FromQuery]GetRequest getRequest)
{
    var query = Mapper.Map<GetRequest, FindRequestQuery>(getRequest);
    query.Id = id;

    var request = _requestService.Find(query);

    if (request == null)
    {
        return NotFound();
    }

    var requestDto = Mapper.Map<Request, RequestDto>(request);

    return Ok(requestDto);
}

我的GetRequest没有ID属性,但是我的FindRequestQuery具有ID属性。

上面的示例效果很好,但是我想知道是否有一种方法可以告诉AutoMapper将id从方法参数映射到FindRequestQuery属性?

2 个答案:

答案 0 :(得分:2)

您尝试过Custom Value Resolvers吗?

答案 1 :(得分:0)

您正在寻找AutoMapper的Inline Mapping功能所提供的功能。

具体地说,它看起来像这样

var query = Mapper.Map<GetRequest, FindRequestQuery>(
                    getRequest, 
                    opt => opt.ConfigureMap().ForMember(dest => dest.Id, m => m.MapFrom(src => id)));