在我的控制器中定义了HttpGet,它需要一个参数:
[HttpGet("{param}")]
public async Task<IActionResult> GetAsync(string param)
{
var result = await standardService.ListAsync();
var resources = mapper.Map<IEnumerable<ModelA>, IEnumerable<EntityAResource>>(result);
return resources;
}
我想知道如何将param
传递给第5行中调用的自动映射器。此参数应在我的Mapping类中使用:
public class MTRProfile : Profile
{
public MTRProfile()
{
CreateMap<ModelA, EntityAResource>()
.ForMember(det => det.Id, opt => opt.MapFrom(src => src.ModelA_Id))
.ForMember(det => det.level, opt => opt.MapFrom(src => src.Level_.ParamTable_LevelNavigation.param));
}
}
有没有办法实现我想要做的事?
编辑
我尝试过:
var resources = mapper.Map<IEnumerable<ModelA>, IEnumerable<EntityAResource>>(result, opt => opt.Items["parameter"] = param);
但是我如何调整地图功能:
.ForMember(det => det.level, opt => opt.MapFrom((src, det, detMember, context) => ???));
例如,如果param = xyz,则应为:
.ForMember(det => det.level, opt => opt.MapFrom(src => src.Level_.ParamTable_LevelNavigation.xyz));
因此要更精确一些。我要实现的是动态访问某个对象的属性。我的对象将是src.Level_.ParamTable_LevelNavigation
,根据参数,我想取回src.Level_.ParamTable_LevelNavigation.xyz
的内容。