Csharp/C#教程:启动时没有加载Automapper配置文件?分享


启动时没有加载Automapper配置文件?

我正在使用:

似乎我的配置文件没有被加载,每次我调用mapper.map我得到AutoMapper.AutoMapperMappingException:’缺少类型映射配置或不支持的映射。

这是我的Startup.cs类的ConfigureServices方法

// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); //register automapper services.AddAutoMapper(); . . } 

在另一个名为xxxMappings的项目中,我有我的映射配置文件。 示例类

 public class StatusMappingProfile : Profile { public StatusMappingProfile() { CreateMap() .ForMember(t => t.Id, s => s.MapFrom(d => d.Id)) .ForMember(t => t.Title, s => s.MapFrom(d => d.Name)) .ForMember(t => t.Color, s => s.MapFrom(d => d.Color)); } public override string ProfileName { get { return this.GetType().Name; } } } 

并在服务类中以这种方式调用地图

  public StatusDTO GetById(int statusId) { var status = statusRepository.GetById(statusId); return mapper.Map(status); //map exception here } 

调用statusRepository.GetById后,status具有值

对于我的Profile类,如果不是从Profileinheritance而是从MapperConfigurationExpressioninheritance,我得到了一个unit testing,如下所示,表示映射是好的。

  [Fact] public void TestStatusMapping() { var mappingProfile = new StatusMappingProfile(); var config = new MapperConfiguration(mappingProfile); var mapper = new AutoMapper.Mapper(config); (mapper as IMapper).ConfigurationProvider.AssertConfigurationIsValid(); } 

我的猜测是我的映射没有被初始化。 我怎么检查? 我错过了什么吗? 我看到了AddAutoMapper()方法的重载

 services.AddAutoMapper(params Assembly[] assemblies) 

我应该通过xxxMappings项目中的所有程序集。 我怎样才能做到这一点?

我明白了。 由于我的映射属于不同的项目,我做了两件事

  1. 从我的API项目(Startup.cs所在的位置,添加了对我的xxxMapprings项目的引用)
  2. 在ConfigureServices中,我使用了获取程序集的重载AddAutoMapper:

    上述就是C#学习教程:启动时没有加载Automapper配置文件?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

     public void ConfigureServices(IServiceCollection services) { services.AddMvc(); //register automapper services.AddAutoMapper(Assembly.GetAssembly(typeof(StatusMappingProfile))); //If you have other mapping profiles defined, that profiles will be loaded too. 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955620.html

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐