我正在尝试使用自动映射器,并且在尝试解析映射器对象时遇到一些问题。
这是代码
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()
{
}
}
知道为什么失败了吗?
答案 0 :(得分:3)
发生此错误的原因是,您尚未注册映射器,应在服务集合的IMapper界面上解决该映射器。
要解决此问题,请将映射概要文件添加到新的映射器配置中,然后从中创建一个映射器并将其绑定到集合。
var config = new AutoMapper.MapperConfiguration(cfg =>
{
cfg.AddProfile(new OrderDataMappingProfile ());
});
var mapper = config.CreateMapper();
_serviceCollection.AddSingleton(mapper);