AutoMapper.Extensions.Microsoft.DependencyInjection 簡單的讓 AutoMapper 註冊到 ASP.NET Core 中,但更版之後出現以 AddAutoMapper() 已過期的訊息,紀錄一下新版的用法。
舊版用法
1 | services.AddAutoMapper(); |
AddAutoMapper()
會掃描所有 assembliy 然後做兩件事:
- 將實作
IProfile
的類別加入 mapping configuration - 將 value resolvers, member value resolvers, type converters 加入 container
更新套件後出現
1 | ServiceCollectionExtensions.AddAutoMapper(IServiceCollection)' is obsolete |
原因
新版本異動了參數簽章
改為傳入 assemblies
1 | services.AddAutoMapper(assembly1, assembly2 /*, ...*/); |
或傳入 types
1 | services.AddAutoMapper(type1, type2 /*, ...*/); |
解決方法
- 不怕麻煩的一個個傳入
- 改用以下寫法,仍然可以自動全部掃描
單一專案:傳入 Starup.cs
1 | services.AddAutoMapper(typeof(Startup)); |
多個專案參考:傳入 所有 Assemblies
1 | services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); |
參考連結
https://github.com/AutoMapper/AutoMapper.Extensions.Microsoft.DependencyInjection/issues/105