[非專業翻譯] Mapster - 依賴注入

玩雙截棍的熊貓發表於2022-04-24

[非專業翻譯] Mapster - 依賴注入

系列介紹

[非專業翻譯] 是對沒有中文文件進行翻譯的系列部落格,文章由機翻和譯者自己理解構成,和原文相比有所有不同,但意思基本一致。

因個人能力有限,如有謬誤之處還請指正,多多包涵。

正文

本文將說明 Mapster 如何配合依賴注入使用

依賴注入支援

這個外掛允許將對映配置新增到依賴注入容器中

PM> Install-Package Mapster.DependencyInjection

如何使用

在啟動時,註冊 TypeAdapterConfigServiceMapper

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);
        ...
    }
}

相關文章