Asp.net web api 无法将接口映射到具有AutoMapper的类,但可以手动映射

Asp.net web api 无法将接口映射到具有AutoMapper的类,但可以手动映射,asp.net-web-api,automapper,Asp.net Web Api,Automapper,我目前从事一个小型ASP.NET核心Web API项目。在我的“VehicleModelController”中,我有一个类“VehicleModel”: 在控制器中,我还有一种检索单车模型的方法: // GET api/<controller>/Guid [HttpGet("{id}")] public async Task<IActionResult> GetModelById(Guid id) { var model = a

我目前从事一个小型ASP.NET核心Web API项目。在我的“VehicleModelController”中,我有一个类“VehicleModel”:

在控制器中,我还有一种检索单车模型的方法:

 // GET api/<controller>/Guid
    [HttpGet("{id}")]
    public async Task<IActionResult> GetModelById(Guid id)
    {
        var model = await Service.GetVehicleModelById(id);            
        if (model == null)
            return NotFound();

        var vehicleModel = new VehicleModelsController.VehicleModel()
        {
            Id = model.Id,
            Name = model.Name,
            VehicleMakeId = model.VehicleMakeId,
        };

        return Ok(vehicleModel);
    }
当我在控制器中手动将IVehicleModel接口映射到VehicleModel类时,这一切都会起作用,正如您前面所看到的,但是当我尝试在控制器中使用AutoMapper进行映射时,就像这样:

var vehicleModel = AutoMapper.Mapper.Map<VehicleModelsController.VehicleModel>(model);
为什么会这样?为什么我不能对Automapper执行相同的操作,我已经手动完成了这些操作

我已在映射配置文件类中定义映射:

CreateMap<VehicleModelsController.VehicleModel, IVehicleModel>().ReverseMap();
    public class MappingProfile : Profile
    { 
      public MappingProfile()
      {
        CreateMap<VehicleModelsController.VehicleModel, IVehicleModel>().ReverseMap();
      }
    }
编辑#2

这正是我得到的错误:

从中,现在您可以传递包含automapper配置文件实现的程序集或该程序集中的任何类型

也提到

要与IServiceCollection实例和一个或多个程序集一起使用:

services.AddAutoMapper(assembly1, assembly2 /*, ...*/);
或标记类型:

services.AddAutoMapper(type1, type2 /*, ...*/);
因此,您可以将Startup.cs作为标记类型传递,如下所示

services.AddAutoMapper(typeof(Startup));

或包含Automapper实现类的程序集

我把你的代码复制粘贴到我的应用程序中,它就可以工作了。您的automapper配置有问题。该映射配置文件中定义的任何其他映射是否正常工作?能否显示您的自动映射类初始化?@MukeshModhvadiya我添加了itUpdate以更新您的启动代码以指出您的映射类services.AddAutoMapper(m=>m.AddProfile(new MappingProfile());让我知道它是否有效。不需要添加配置文件,只需传递程序集或类型。看见
    public class MappingProfile : Profile
    { 
      public MappingProfile()
      {
        CreateMap<VehicleModelsController.VehicleModel, IVehicleModel>().ReverseMap();
      }
    }
services.AddAutoMapper();
services.AddAutoMapper(assembly1, assembly2 /*, ...*/);
services.AddAutoMapper(type1, type2 /*, ...*/);
services.AddAutoMapper(typeof(Startup));