gpt4 book ai didi

c# - 带参数的 AutoMapper 依赖注入(inject)

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:32 25 4
gpt4 key购买 nike

Error: No parameterless constructor for AutoMapperConfiguration

我正在使用 nuget 包 automapper DI

public class AutoMapperConfiguration : Profile
{
private readonly ICloudStorage _cloudStorage;

public AutoMapperConfiguration(ICloudStorage cloudStorage)
{
_cloudStorage = cloudStorage;

// Do mapping here
}
}

public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ICloudStorage, AzureStorage>();
services.AddAutoMapper(); // Errors here
}

如何使用带参数的自动映射器 DI?

最佳答案

我认为您无法将 DI 参数添加到 Profile。这背后的部分逻辑可能是这些仅实例化一次,因此通过 AddTransient 注册的服务不会按预期运行。

一种选择是将其注入(inject)到 ITypeConverter 中:

public class AutoMapperConfiguration : Profile
{
public AutoMapperConfiguration()
{
CreateMap<SourceModel, DestinationModel>().ConvertUsing<ExampleConverter>();
}
}

public class ExampleConverter : ITypeConverter<SourceModel, DestinationModel>
{
private readonly ICloudStorage _storage;

public ExampleCoverter(ICloudStorage storage)
{
// injected here
_storage = storage;

}
public DestinationModel Convert(SourceModel source, DestinationModel destination, ResolutionContext context)
{
// do conversion stuff
return new DestinationModel();
}
}

public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ICloudStorage, AzureStorage>();
services.AddAutoMapper();
}

关于c# - 带参数的 AutoMapper 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com