[非專業翻譯] Mapster - 依賴注入
系列介紹
[非專業翻譯] 是對沒有中文文件進行翻譯的系列部落格,文章由機翻和譯者自己理解構成,和原文相比有所有不同,但意思基本一致。
因個人能力有限,如有謬誤之處還請指正,多多包涵。
正文
本文將說明 Mapster 如何配合依賴注入使用
依賴注入支援
這個外掛允許將對映配置新增到依賴注入容器中
PM> Install-Package Mapster.DependencyInjection
如何使用
在啟動時,註冊 TypeAdapterConfig
和 ServiceMapper
:
public void ConfigureServices(IServiceCollection services)
{
...
var config = new TypeAdapterConfig();
// Or
// var config = TypeAdapterConfig.GlobalSettings;
services.AddSingleton(config);
services.AddScoped<IMapper, ServiceMapper>();
...
}
注意!
ServiceMapper
可以根據實際的需求來決定在依賴注入容器的生命週期,但TypeAdapterConfig
必須是Singleton
。
對映配置
可以通過 MapContext.Current.GetService<TService>()
從依賴注入容器中獲取服務。
例如從 MapContext.Current.GetService
獲取 INameFormatter
服務:
config.NewConfig<Poco, Dto>()
.Map(dest => dest.Name, src => MapContext.Current.GetService<INameFormatter>().Format(src.Name));
對映
如果配置了依賴注入,那麼需要注入 IMapper
例項用於物件對映:
public class FooService {
private readonly IMapper _mapper;
public FooService(IMapper mapper) {
_mapper = mapper;
}
public void DoSomething(Poco poco) {
var dto = _mapper.Map<Dto>(poco);
...
}
}