我正在努力理解我在这里做错了什么。我一直在解决方案中使用 Automapper + Automapper.Attributes ( https://github.com/schneidenbach/AutoMapper.Attributes ),最近我不得不将我的 API 项目拆分成一个“核心”库和原始 API . 当类文件移到 API 项目之外时,Automapper 无法创建映射。我已经设置了一个具有以下结构的演示项目来确认这个问题:(可在此处获得:https : //github.com/greghesom/AutoMapper_Example)解决方案API(客户和人员类)API.Core(宠物和狗类)API 项目引用 API.CorePet 类映射到 Dog 类Person 类映射到 Customer 类API.Core - 狗类namespace API.Core{ public class Dog { public string Name { get; set; } }}API.Core - 宠物类namespace API.Core{ [MapsTo(typeof(Dog))] public class Pet { [MapsToProperty(typeof(Dog), "Name")] //Edit: Fixed this typo public string PetName { get; set; } }}API - 人员类namespace API.Models{ [MapsTo(typeof(Customer))] public class Person { [MapsToProperty(typeof(Customer), "FirstName")] public string Name { get; set; } }}API - 客户类namespace API.Models{ public class Customer { public string FirstName { get; set; } }}API - 启动 AutoMapper.Mapper.Initialize(cfg => { typeof(API.WebApiConfig).Assembly.MapTypes(cfg); });API - 控制器var person = new Person { Name = "John" };var customer = AutoMapper.Mapper.Map<Customer>(person);//This Worksvar dog = new Dog { Name = "Lucky" };var pet = AutoMapper.Mapper.Map<Pet>(dog);//This throws exception
2 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
我遇到了同样的问题(AutoMapper 7.0.0)。问题的关键在于错误消息:“AutoMapper 为您创建了此类型映射,但您的类型无法使用当前配置进行映射”。从 6.2.0 开始,AutoMapper 尝试为未显式映射的类型创建映射本身,即:在很多情况下不再需要创建映射。
但是,它似乎使用它自己创建的映射而不是您定义的映射,即使对于您明确定义它们的类型也是如此。至少,这是我遇到的。
一个快速检查的方法:降级到6.1.1版本,看看问题是否仍然存在。就我而言,降级解决了这个问题。
我确实觉得必须有更好的方法来解决这个问题(或者它甚至是一个错误......),但我还不知道如何。万一我找到了,我会回贴在这里。只是想我已经把它扔在这里了,以防你需要快速修复:)
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报
0/150
提交
取消