怎么在.NET Core中注入AutoMapper依賴?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

最近在 review 代碼時發現同事沒有像其他項目那樣使用AutoMapper.Mapper.Initialize() 靜態方法配置映射,而是使用了依賴注入 IMapper 接口的方式
services.AddSingleton<IMapper>(new Mapper(new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, MentionUserDto>();
})));于是趁機學習了解一下,在 github 上發現了 AutoMapper.Extensions.Microsoft.DependencyInjection ,使用它只需通過AutoMapper.Profile 配置映射
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<User, MentionUserDto>();
}
}然后通過AddAutoMapper() 進行依賴注入,它會在當前程序集自動找出所有繼承自 Profile 的子類添加到配置中
services.AddAutoMapper();
后來發現在使用 ProjectTo 時
.Take(10) .ProjectTo<MentionUserDto>() .ToListAsync();
發現如果自己使用AddSingleton<IMapper>() ,會出現下面的錯誤(詳見博問):
Mapper not initialized. Call Initialize with appropriate configuration.
使用AddAutoMapper() 并且將 UseStaticRegistration 為 false 時也會出現同樣的問題。
解決方法是給 ProjectTo 傳參_mapper.ConfigurationProvider(注:傳 _mapper 不行)
.ProjectTo<MentionUserDto>(_mapper.ConfigurationProvider)
對于自己依賴注入的操作方式,后來參考 AutoMapper.Extensions.Microsoft.DependencyInjection的實現
services.AddSingleton(config); return services.AddScoped<IMapper>(sp => new Mapper(sp.GetRequiredService<IConfigurationProvider>(), sp.GetService));
采用了下面的方式,如果不想使用AddAutoMapper() 通過反射自動找出 Profile ,建議使用這種方式
AutoMapper.IConfigurationProvider config = new MapperConfiguration(cfg =>
{
cfg.AddProfile<MappingProfile>();
});
services.AddSingleton(config);
services.AddScoped<IMapper, Mapper>();看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯網站建設公司,的支持。
本文標題:怎么在.NETCore中注入AutoMapper依賴-創新互聯
文章鏈接:http://www.yijiale78.com/article44/dgseee.html
成都網站建設公司_創新互聯,為您提供App開發、微信小程序、做網站、企業建站、網站改版、營銷型網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯