我正在努力理解我在這里做錯了什么。我一直在解決方案中使用 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 關注
- 226 瀏覽
添加回答
舉報
0/150
提交
取消