如何将过滤器参数传递给自动映射器?

问题描述 投票:1回答:1

在我的控制器中定义了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));
c# asp.net-core entity-framework-core automapper
1个回答
0
投票

因此要更精确一些。我要实现的是动态访问某个对象的属性。我的对象将是src.Level_.ParamTable_LevelNavigation,根据参数,我想取回src.Level_.ParamTable_LevelNavigation.xyz的内容。

© www.soinside.com 2019 - 2024. All rights reserved.