依赖项解析器的Automapper IMapper问题

时间:2018-09-23 18:05:16

标签: c# .net dependency-injection .net-core automapper

我正在尝试使用自动映射器,并且在尝试解析映射器对象时遇到一些问题。

这是代码

 public class MapAdapter : IMyMapper
 {
        private readonly AutoMapper.IMapper _mapper;

        public MapAdapter(AutoMapper.IMapper mapper)
        {
            _mapper = mapper;
        }

public TDest Map<TSource, TDest>(TSource source)
        {
            try
            {
                return _mapper.Map<TSource, TDest>(source);
            }
            catch (Exception exception)
            {
                throw;
            }
        }
}

这是例外

  

处理请求时发生未处理的异常。   InvalidOperationException:无法解析类型的服务   尝试激活时出现“ AutoMapper.IMapper”   'Infrastructure.Mapper.Adapter.MapAdapter'。

如果我从构造函数中删除了AutoMapper.Mapper依赖项

public MapAdapter()

一切正常,除了自动映射器_mapper字段(当然为空)

这是DI配置,其中IMyMapper是我的界面,而MapAdapter是IMyMapper的实现

_serviceCollection.AddTransient<IMyMapper, MapAdapter>();

我的映射配置文件为空

  public class OrderDataMappingProfile : Profile
    {
        public OrderDataMappingProfile()
        {
        }
    }

知道为什么失败了吗?

1 个答案:

答案 0 :(得分:3)

发生此错误的原因是,您尚未注册映射器,应在服务集合的IMapper界面上解决该映射器。

要解决此问题,请将映射概要文件添加到新的映射器配置中,然后从中创建一个映射器并将其绑定到集合。

var config = new AutoMapper.MapperConfiguration(cfg =>
{
    cfg.AddProfile(new OrderDataMappingProfile ());
});
var mapper = config.CreateMapper();
_serviceCollection.AddSingleton(mapper);