映射器的结果为NULL?如何将我的api请求映射到dto?

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

[我正在调用api,然后将该响应反序列化为列表,当我随后尝试对新列表进行响应时:

    public async Task<IEnumerable<RoadDto>> GetRoadStatusDetail()
    {
        List<Road> road = await CallApi();

        return road
            .Select(x => _mapper.Map(x)); 

    }


    private async Task<List<Road>> CallApi()
    {
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(baseURL);

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        HttpResponseMessage res = await client.GetAsync(baseURL);

        if (res.IsSuccessStatusCode)
        {
            var roadResponse = res.Content.ReadAsStringAsync().Result;

           var road = JsonConvert.DeserializeObject<List<Road>>(roadResponse);

           return road;
        }

        return null;
    }

我没有使用自动映射器,而是使用了这种通用方法:

public interface IMapToNew<in TIn, out TOut>
{
    TOut Map(TIn model);
}

我得到的错误是

System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
_mapper was null. 

我不确定为什么它会为null,我在这里创建了一个应处理该问题的映射类?

   public class RoadToRoadDtoMapper : IMapToNew<Road, RoadDto>
{
    public RoadDto Map(Road model)
    {
        return new RoadDto
        {
            DisplayName = model?.DisplayName,
            StatusSeverity = model?.StatusSeverity,
            StatusSeverityDescription = model?.StatusSeverityDescription
        };
    }

}
c# mapping dto
1个回答
0
投票

_mapper变量为null,因为错误状态。 DI您的映射器接口到您的控制器:

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