启动时没有加载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项目中的所有程序集。 我怎样才能做到这一点?
我明白了。 由于我的映射属于不同的项目,我做了两件事
- 从我的API项目(Startup.cs所在的位置,添加了对我的xxxMapprings项目的引用)
-
在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